我想在上一个会话被销毁后使用 cookie 启动一个新会话。
如果设置了 Cookie,但没有设置会话,我可以仅使用 Cookie 自动创建新会话吗?
目前,我正在实现一个记住我按钮。 我的登录代码的一部分是
if($rememberme=="on"){
$user_id=mysql_result($query_run,0,'id');
setcookie("user_id",$user_id,time()+7200);
$_SESSION['user_id']=$_COOKIE['user_id'];
header('Location:front_page.php');
}else if($rememberme==""){
echo'ok';
$user_id=mysql_result($query_run,0,'id');
echo $user_id;
$_SESSION['user_id']=$user_id;
header('Location:front_page.php');
我需要这样做,因为如果设置了cookie,但没有设置会话,它会导致我的网站上出现各种错误。 因为我在不同的地方使用了 $_SESSION['userid'] 变量。 如果未设置会话,我的许多功能将无法正常工作
编辑:我尝试了以下内容,但没有工作。
我想在上一个会话被销毁后使用 cookie 开始一个新会话。 还有其他建议吗?
set_session_from_cookie();
function set_session_from_cookie(){
if(isset($_COOKIE['user_id'])){
$_SESSION['user_id']=$_COOKIE['user_id'];
}
}
我建议你使用不同的方式来实现"记住我"功能。
您可以检查是否选中了"记住我"复选框,然后生成一个唯一和私有密钥,并将密钥放入cookie和数据库中的某个用户行中。
现在,在页面顶部的某个地方,检查cookie,然后根据需要设置会话。
例
if(isset($_COOKIE["c_key"]) && !isset($_SESSION["userId"]))
{
/*
* Here check for users matching $_COOKIE["c_key"] in database and get the userId
*/
$_SESSION["userId"] = $user_data["userId"];
}
并继续在任何地方使用会话。