私は自分の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ページを表示していません。どうしたの?
関数内でsession_start()を宣言するのではなく、関数の外に置いてみてください。 – MuthaFury
DBリターンを確認しましたか?成功しましたか?パスワードはハッシュされるべきです。なぜ '@'を使用しているのですが、無視しているエラーメッセージがありますか? – chris85
DBが正常に返されました。そして私は未定義の変数$ _SESSION ['login']の通知を隠すために@を使いました。 –