0

我在整个编码过程中遇到了一个奇怪的错误。

在每一页上,我在页面顶部都需要一个 authentication.php。

里面会有这样的:

if(!isset($_SESSION)) session_start();
if(!isset($_SESSION['test'])) 
{ 
    $_SESSION['auth'] = randString(); //this is my own method creating a random auth id
    $_SESSION['test'] = "Session is set and remembered.";   
}

但是,我的身份验证会在每次刷新时继续生成一个随机 ID。

在这一点上,我发现我的会话以 cookie 形式存储了一个“PHPSESSID”,并将其更改为

if(!isset($_SESSION['auth'])) 
{ 
    $_SESSION['auth'] = $_COOKIE['PHPSESSID'];
}
else
{
    echo "hi";  
}

虽然这改变了我每次刷新时更改的会话 ID,但它永远不会回显“hi”,因此得出的结论是会话值没有被存储。

有谁知道我做错了什么?

4

2 回答 2

1

session_start()需要在页面顶部调用,即使在会话开始之后也是如此。

去掉if开头的:if(!isset($_SESSION))

于 2013-05-28T08:39:32.767 回答
0

如果您不在session_start()每个页面的开头调用,它将不会存储会话变量。如果您在许多页面中包含此代码,则再次调用它应该是安全的。我从来没有遇到过这样做的任何问题。只需取消第一行并添加session_start()

会话

于 2013-05-28T08:44:01.020 回答