我有2页:login.php和index.php。两页都以
开头session_start();
当我设置
$_SESSION['user'] = "name";
在login.php中而不是打开index.php,我的会话对象为空。怎么样?
编辑:
我发现了问题:IE 7.我不得不访问我的域名。但是,我认为会话存储在服务器上,而不是客户端?为什么我有IE浏览器访问我的域名? (http://www.pcwindowstips.com/2007/09/04/how-to-enable-cookies-in-internet-explorer-7/)
答案 0 :(得分:6)
我认为会话存储在服务器上,而不是客户端?为什么我有IE授权访问我的域名? (http://www.pcwindowstips.com/2007/09/04/how-to-enable-cookies-in-internet-explorer-7/)
会话的工作方式是为站点存储会话cookie,其中包含您的会话ID。服务器知道您的身份的唯一方法是在每次加载页面时读取会话ID cookie。所有$ _SESSION数据都存储在服务器上,供每个用户使用,但必须为服务器设置cookie才能知道要检索的$ _SESSION数据。
这也是为什么如果你获得会话ID cookie,你基本上可以“成为”另一个用户。
答案 1 :(得分:2)
Internet Explorers比其他大多数浏览器都有更严格的Cookie政策。检查您的session cookie parameters(另请参阅session_get_cookie_params()
)并尽可能使用显式值替换默认值。此外,您可以发送[假P3P策略](http://msdn.microsoft.com/en-us/library/ms537343(VS.85).aspx)以满足Internet Explorers。
答案 2 :(得分:2)
也许php.ini中的这个变量映射到现有路径
session.save_path =“c:/ wrong / path”
答案 3 :(得分:2)
这件事发生在我身上,可能会为某些人带来光明。我的会话工作不正常。 IE 8和Firefox正在丢失会话信息。
我收录了一个文件。包含文件在尾随& ques?>
之后有一个额外的回车回车开始了。我把include_start放在include之后。繁荣。
答案 4 :(得分:1)
这里信息不多,我会尝试使用我的心灵力量。
用户登录后,是否设置了会话var,然后使用http标头将用户重定向到index.php?如果是这样,我认为会话cookie不会发送给用户。如果是这种情况,解决方案是:
您还可以尝试在两个页面上转储会话ID,以查看您是否以某种方式开始新会话:
echo 'Session ID is: ' . SID . "<br/>\n"
答案 5 :(得分:1)
在调用session_start()之前,您需要验证是否已启用cookie并且没有任何内容(这包括存档开头或结尾的空行)。