我希望在上一个会话被销毁后使用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'];
}
}
答案 0 :(得分:1)
我建议您使用不同的方式来“记住我”。
您可以检查是否选中了“记住我”复选框,然后生成一个UNIQUE和密钥,并将密钥放在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"];
}
继续在任何地方使用会话。