为什么我的 cookie 没有设置?

新手上路,请多包涵

我有以下 PHP 函数:

 function validateUser($username){
    session_regenerate_id ();
    $_SESSION['valid'] = 1;
    $_SESSION['username'] = $username;
    setcookie('username2',$username,time()+60*60*24*365);
    header("Location: ../new.php");
}

然后我获取 cookie:

echo $_COOKIE['username2']; exit();

(我只放了 exit() 用于调试)

唯一的问题,它是空白的。有任何想法吗?

更新: 这是调用函数的方式:

     if(mysql_num_rows($queryreg) != 0){
    $row = mysql_fetch_array($queryreg,MYSQL_ASSOC);
    $hash = hash('sha256', $row['salt'] . hash('sha256', $password));
    if($hash == $row['password']) {
        if($row['confirm'] == 1){
            if(isset($remember)){
                setcookie('username',$username,time()+60*60*24*365);
                setcookie('password',$password,time()+60*60*24*365);
            } else {
                setcookie('username','',time()-3600);
                setcookie('password','',time()-3600);
            }
            validateUser($username);

我没有包括所有 if() 语句以节省一些空间。

原文由 Jason 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 377
1 个回答

[在 XAMPP for PHP 8.0.19 中测试的解决方案] 我修改了文件 php.ini 并设置了 session.auto_start=1 。请记住,每次此函数出现在我的代码中,每个文件中时,我都会在 session_start() 之前调用 session_set_cookie_params([param => value])

session.auto_star :在请求启动时初始化会话。

http://php.net/session.auto-start

仍在研究和分析其原因和功能,这是一种意外。可能不是最安全的解决方案。

原文由 Giulix 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题