登录时,我根据“记住我”复选框创建以下Cookie:
$_SESSION['username'] = $username;
//creates a cookie if Remember Me is checked
if(isset($_POST['remember'])){
$expire_time = time()+86400;
setcookie("lion123_rmbr", $email, $expire_time);
setcookie("lion123_rmbr_usrnm", $username, $expire_time);
}
就在上面,我只在登录时创建了会话。
当然的想法是能够关闭浏览器,重新打开并能够访问成员区域而无需登录。在header.php
我有以下回忆:
if (isset($_SESSION['username']) || isset($_COOKIE['lion123_rmbr']) || isset($_COOKIE['lion123_rmbr_usrnm'])) {
$userLoggedIn = $_SESSION['username'];
$user_details_query = mysqli_query($con, "SELECT * FROM users WHERE username='$userLoggedIn'");
$user = mysqli_fetch_array($user_details_query);
}
else{
header("Location: register.php");
}
当我打开和关闭浏览器,然后导航到成员区域时,cookie允许我这样做;但是,由于在登录时没有设置$_SESSION['username'] = $username;
,因此缺少用户特定数据。当然,一旦浏览器关闭就被终止。所以我收到username
未定义的错误。
我认为为用户名添加第二个cookie可能是修复... nope :)任何有关如何激活用户会话的帮助都将受到赞赏 - 如果创建会话的唯一方法是通过登录,这怎么可能传递数据以激活$userLoggedIn
?
三江源。