PHP会话ID不同

时间:2009-09-03 06:05:46

标签: php session

我正在使用php 5.2.8

我有index.html,它从IFRAME加载LOAD.PHP。

iframe src =“load.php”.....

我打印出了load.php的会话ID。

然后我跑了另一个test.php,并打印出它的会话ID。

php会话ID 不同。

因此,我无法传递任何会话变量....

这里发生了什么?这个问题以前没有发生过,突然今天它开始发生......但是这个问题仍然存在......它让我疯了!

session.saved_pa​​th对于.... / var / php5都是一样的,cookie路径是相同的......

4 个答案:

答案 0 :(得分:1)

如果PHP在页面的第二次加载时创建第二个会话ID,则意味着第一个会话ID未正确传回。可能,cookie由于某种原因没有设置。要检查的事项:

  • 在多个浏览器中测试?
  • 您是否以某种方式在浏览器中禁用了Cookie?
  • iframe是否在可能阻止cookie传递的其他域或子域上?
  • 安装LiveHTTPHeaders或其他一些firefox加载项以检查您收到的Cookie

答案 1 :(得分:0)

(不是真的答案,因为你的问题在我看来似乎没有足够的数据来提供某个答案,而是要检查一些事情)

文件位于同一个域和目录中,并且cookie不限于不同的目录(即path=/)? (注意:除非您明确说明session_set_cookie_params

,否则它们不受限制

浏览器是否发送了cookie(或者您是否处于“隐身模式”)?如果cookie不起作用,PHP可能会尝试在QueryString中传递会话ID并失败,如果你去test.php手动编写其名称而不是链接(通常我使用session.use_only_cookies=1来避免)。

答案 2 :(得分:0)

答案 3 :(得分:0)

如果它们具有不同的cookie域,或者cookie根本不起作用,并且PHP被配置为仅使用cookie用于会话ID(session.use_only_cookies = 1),则它们将具有不同的SID。

Cookie域名解释为here

只有指定域内的主机才能为域设置cookie,域中必须至少包含两(2)或三(3)个句点,以防止表单域:“。 com“,”。edu“和”va.us“。在下面列出的七个特殊顶级域之一中失败的任何域只需要两个句点。任何其他域名至少需要三个。七个特殊的顶级域名是:“COM”,“EDU”,“NET”,“ORG”,“GOV”,“MIL”和“INT”。

domain的默认值是生成cookie响应的服务器的主机名。

因此,为您的主机设置一个公共域,他们将共享cookie,因此PHP SID:)