【发布时间】:2018-05-04 17:35:42
【问题描述】:
我正在处理一个项目并使用 php 会话来存储一些信息。 在一个脚本中,我使用 session_start() 开始会话并创建一些 $_SESSION['var']s。在另一个脚本中,我想获取此变量,但将使用 session_start() 和新的 sessionid 创建一个新会话。 我不确定那里发生了什么。为什么会在一个项目中创建两个不同的会话。如何解决?
一些php配置参数:
session.use_cookies = 1
session.use_only_cookies = 1
session.use_trans_sid = 0
expose_phps= On
sessionid 使用 cookie。
最好的问候,
【问题讨论】:
-
发生这种情况的原因有很多。如果您的某些页面以
www为前缀,而有些则没有,则服务器会将它们解释为不同的网站,并分配不同的会话。如果您的网站的一部分使用 SSL 而一部分不使用,它们也可以有不同的会话。如果最终用户使用不同的浏览器或设备,他们将有不同的会话。无法判断您的问题中是否适用。 -
感谢支持,只有一个域名,不同目录,SSL暂时没有使用。在其他域的其他服务器上,代码运行良好,也许有一些配置问题?
-
在您的浏览器控制台中,检查 cookie,并查看它们是否具有不同的
PHPSESSID哈希值。这将揭示您的问题可能是服务器配置问题(如果它们不同),还是代码逻辑问题(如果不是)。如果它们相同,可能仍然是代码逻辑的问题,但可能性要小得多。 -
作为一般规则,始终使用 www 或始终排除它通常是一个好主意,因此您可以在所有情况下完全排除它是原因。例如,如果您想始终包含它,您可以使用 like this。
标签: php session sessionid session-management