如果设置了 cookie,是否可以启动新会话


is it possible to start a new session if a cookie is set?

我想在上一个会话被销毁后使用 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"]; 
}

并继续在任何地方使用会话。