我遇到了一个在整个编码过程中一直打开和关闭的奇怪错误。
在每个页面上,我在页面顶部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',这得出会话值没有被存储的结论。
有谁知道我做错了什么?
答案 0 :(得分:1)
session_start()
。
删除开头的if
:if(!isset($_SESSION))
答案 1 :(得分:0)
如果您不在每个页面的开头调用session_start()
,则不会存储会话变量。如果您在许多页面中包含此代码,则再次调用它应该是安全的。我从来没有遇到任何问题。只需修改第一行并添加session_start()