我已经保护了所有检查设置会话变量的页面,以确定登录用户,非常标准的东西。我遇到问题的地方是我将表单信息提交到后端页面,该页面将处理该数据,然后重定向到成功/失败确认页面。在那个时间会话丢失,至少是与变量的会话。会话仍然存在,因为我可以手动导航到安全的页面后,它的工作原理。在从后端重定向失败后,只需从后端页面自动重定向到安全页面或其中一个不安全页面上的链接。它可能相关也可能不相关,但在访问多个安全页面或执行使用有问题的后端页面的操作之一后,我的计算机上有两个会话cookie来自域名 - 一个注册到domain.com,另一个注册到domain.com www.domain.com。在我的智慧结束时,谢谢。
答案 0 :(得分:4)
我在这里看到两个问题,但它们是相关的。
首先,您似乎在安全(https://
)和不安全(http://
)页面之间蹦蹦跳跳。 Cookie不应该在这些之间共享,因此这就是您的会话似乎中断的原因(PHP使用会话ID设置cookie)。
另一个密切相关,即在domain.com
和www.domain.com
之间共享。 Cookie可以在一个方向共享,但不能在另一个方向共享。不要担心:选择一个主机名并坚持下去。然后检查您是否将会话的cookie域设置为正确的域。
答案 1 :(得分:0)
在输出任何内容之前,您必须从PHP页面调用session_start()
,最好是在页面开头。
如果已经创建了会话,则会为该页面恢复该会话。