会话不会在页面之间保存值

时间:2013-05-28 08:36:28

标签: php session authentication cookies

我遇到了一个在整个编码过程中一直打开和关闭的奇怪错误。

在每个页面上,我在页面顶部require_once一个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.";   
}

但是,我的auth会在每次刷新时继续生成随机ID。

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

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

虽然这改变了我的会话ID以改变每次刷新,但它永远不会回显'hi',这得出会话值没有被存储的结论。

有谁知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

即使在会话开始后,也需要在页面顶部调用

session_start()

删除开头的ifif(!isset($_SESSION))

答案 1 :(得分:0)

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

Sessions

相关问题