我正在使用php 5.2.8
我有index.html,它从IFRAME加载LOAD.PHP。
iframe src =“load.php”.....
我打印出了load.php的会话ID。
然后我跑了另一个test.php,并打印出它的会话ID。
php会话ID 不同。
因此,我无法传递任何会话变量....
这里发生了什么?这个问题以前没有发生过,突然今天它开始发生......但是这个问题仍然存在......它让我疯了!
session.saved_path对于.... / var / php5都是一样的,cookie路径是相同的......
答案 0 :(得分:1)
如果PHP在页面的第二次加载时创建第二个会话ID,则意味着第一个会话ID未正确传回。可能,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:)