2017-09-11 38 views
-2

以下のコードには隠れたエラーが多い場合があります。PHPでセッションを使用してアカウントフォルダに移動する方法

私が欲しいもの: -私は、ユーザーがindex.phpにあり、ログインしている場合、それはそのアカウントのフォルダにリダイレクトされますと結果sessionを持っています。

私が入手したもの:index.phpで私はsee imageを得ました。アカウントのフォルダが規定されている方法

: -

unameとして裁判 & デモ

を有する2人のユーザーがいると仮定のでトライアルのアカウントフォルダがhttp://localhost/Ebooks/new/trialになります& デモ手段は、フォルダを占め

そのuname

unameに基づいていますが、私が試した結果を取得するためのusername

以外の何ものでもありません: -

のindex.php

<?php 
session_start(); 
require_once 'class.user.php'; 
$user_login = new USER(); 

if($user_login->is_logged_in()!="") 
{ 
    $user_login->redirect($uname); 
} 

if(isset($_POST['btn-login'])) 
{ 
    $uname = trim($_POST['txtuname']); 
    $upass = trim($_POST['txtupass']); 

    if($user_login->login($uname,$upass)) 
    { 
     $user_login->redirect($uname); 
    } 
} 
?> 

class.user.php

public function is_logged_in() 
    { 
     if(isset($_SESSION['userSession'])) 
     { 
      return true; 
     } 
    } 

    public function redirect($uname) 
{ 
    try{ 
     $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userName=:username"); 
     $stmt->execute(array(":username"=>$uname)); 
    header("Location: $uname"); 
    } catch (Exception $e) { 
     die('Error! '.$e->getMessage()); 
    } 
} 

    public function logout() 
    { 
     session_destroy(); 
     $_SESSION['userSession'] = false; 
    } 

しかし、私はsee imageとして結果を取得します。

私は問題を整理するようにリクエストします。

私のerrorが解決された場合は問題が解決されたとみなさないでください。私は基本的にHow to go to account folder using session in PHPが欲しいですが、これは多くの隠された問題があるかもしれません。

+0

'$ uname'はコード内のどこにも設定できません。 'USER'クラスをご覧ください。あなたの返事が間違っている可能性があるので。 – IsThisJavascript

+0

「バナー効果」をテキストから削除してください。 –

+0

@ WillParky93問題の部分を 'index.php'で編集しました。疑問が解消されるかもしれません。もっとクリアしてください。 –

答えて

3

あなたがtry何かにgoiungている場合は、キャッチが必要になります。しかし、あなたがキャッチエリアになります

public function redirect($uname) 
    { 
     try{ 
      $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userName=:username"); 
      $stmt->execute(array(":username"=>$uname)); 
     header("Location: $uname"); 
     } catch (Exception $e) { 
      die('Error! '.$e->getMessage()); 
     } 
    } 

がエラーを処理します。

+0

しかし、今私は別のエラー画像を参照しています: - http://i.imgur.com/tEzwwgg.png –

+0

あなたは何かに$ unameを決して決して! '$ user_login-> redirect($ uname);' – delboy1978uk

+0

だから、どのように設定するのですか?ログインセッションごとに '$ uname'を実行します。上記のコードを参照してください。 –

1

tryを使ってブロックをキャッチする必要があります。私はあなたがPDOを使用していると仮定しているので、解決策は次のとおりです。

public function redirect($uname) { 
    try{ 
     $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userName=:username"); 
     $stmt->execute(array(":username"=>$uname)); 
    } 
    catch(PDOException $error) { 
     return $error->getMessage(); 
    } 
    header("Location: $uname"); 
} 
関連する問題