PHP Session无法在PHP5中运行

时间:2009-05-18 17:07:28

标签: php session

我有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/

6 个答案:

答案 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不会发送给用户。如果是这种情况,解决方案是:

  1. 最初显示登录表单时调用session_start()(不仅仅是在用户回复之后);或者:
  2. 显示“登录成功!”消息然后使用元刷新重定向,或者只提供指向index.php的链接。

  3. 您还可以尝试在两个页面上转储会话ID,以查看您是否以某种方式开始新会话:

    echo 'Session ID is: ' . SID . "<br/>\n"
    

答案 5 :(得分:1)

在调用session_start()之前,您需要验证是否已启用cookie并且没有任何内容(这包括存档开头或结尾的空行)。