2016-08-02 5 views
1

私は自分のfunctions.phpファイルに他のページでセッション変数を取得したいが、表示されません。私に何ができる?

public function login(){ 
    $sql = "SELECT `ID`,`userName` FROM `userdata` WHERE `userName`=:userN AND `password`=:passd"; 
    $stmt = $this->pdo->prepare($sql); 
    $stmt -> bindValue(":userN",$this->userName); 
    $stmt ->bindValue(":passd",$this->password); 
    $stmt ->execute(); 
    $userData = $stmt ->fetch(); 
    $check = $stmt ->rowCount(); 
    if($check==1){ 
     session_start(); 
     $_SESSION['login'] = true; 
     $_SESSION['uid'] = $userData['ID']; 
     $_SESSION['uName'] = $userData['userName']; 
     $_SESSION['Name'] = $userData['Name']; 
     $_SESSION['login_msg'] = "Login Successful"; 
     return true; 
    }else{ 
     return false; 
    } 
} 
public function getSession(){ 
    return @$_SESSION['login']; 
} 

をコードのこの行を追加したそして、私のindex.phpファイルに私は、MySQLデータベースから取得する必要が名を取得したいです。

session_start(); 
include_once "functions.php"; 
$object = new functions(); 
$userName = $_SESSION['uName']; 
$Name  = $_SESSION['Name']; 
if(!$object->getSession()){ 
    header("Location: login.php"); 
    exit(); 
} 
echo "Welcome". $Name; 

しかし、これはindex.phpページを表示していません。どうしたの?

+0

関数内でsession_start()を宣言するのではなく、関数の外に置いてみてください。 – MuthaFury

+0

DBリターンを確認しましたか?成功しましたか?パスワードはハッシュされるべきです。なぜ '@'を使用しているのですが、無視しているエラーメッセージがありますか? – chris85

+0

DBが正常に返されました。そして私は未定義の変数$ _SESSION ['login']の通知を隠すために@を使いました。 –

答えて

0

は、あなたも、セッションを取得する関数を使用する必要はありません。この

session_start(); 
public function login(){ 
    $sql = "SELECT `ID`,`userName` FROM `userdata` WHERE `userName`=:userN AND `password`=:passd"; 
    $stmt = $this->pdo->prepare($sql); 
    $stmt -> bindValue(":userN",$this->userName); 
    $stmt ->bindValue(":passd",$this->password); 
    $stmt ->execute(); 
    $userData = $stmt ->fetch(); 
    $check = $stmt ->rowCount(); 
    if($check==1){ 
     $_SESSION['login'] = true; 
     $_SESSION['uid'] = $userData['ID']; 
     $_SESSION['uName'] = $userData['userName']; 
     $_SESSION['Name'] = $userData['Name']; 
     $_SESSION['login_msg'] = "Login Successful"; 
     return true; 
    }else{ 
     return false; 
    } 
} 

を試してみてください。いつでもどこでも好きな場所で$ _SESSION ['login']を使うことができます。ただし、セッションを使用するすべてのファイルにfunctions.phpを含める必要があります。

+0

私はfunctions.phpファイルを含んでいます。 index.phpファイルにはデータベースから名前が表示されません。 $ userData = $ stmt - > fetch();の問題が発生しました。 ? @spod –

+0

クエリの問題でした。私はそれをSELECT 'ID'、' userName'をSELECT * FROM .....に置き換えることで修正しました –

関連する問題