会话数据在 Web 主机上变得混乱

Posted

技术标签:

【中文标题】会话数据在 Web 主机上变得混乱【英文标题】:Session data gets confused on web host 【发布时间】:2015-04-15 16:46:22 【问题描述】:

搞砸了 = 我登录到我的帐户,如果我更改页面,我在数据库中的另一个随机帐户中(但不再是我的帐户)。这只发生在外部主机上,本地主机工作正常。

我在所有页面上都有session_start(),并且我只在一个文件中设置了会话数据,一旦有人登录,该文件就不会包含在任何页面的任何位置。

我找到了this post 和this other post

在每一页都试过这个

header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

我的 .htaccess 将 website.com 重定向到 www.website.com,因此 URL 是唯一的。

我检查了我的代码,并且在用户登录后我没有在任何地方更改会话数据,所以我不知道是什么导致了这个问题。

有什么想法吗?

【问题讨论】:

您是否确认这不是您链接到的第一个问题中的缓存问题? @CBroe 是的,我做到了。我检查了每个页面的 HTTP 标头,但没有一个被缓存。此外,如果重要的话:phpSESSID 保持不变。 您是否有权访问服务器上存储会话文件的临时目录? (假设使用了默认的 PHP 会话机制。)尝试观察创建了哪些文件、何时修改它们以及它们包含的内容可能会对此有所了解。 抱歉,我没有访问权限。我使用 hostgator,我只能访问我的 /home 文件夹。根据 php.ini 配置,会话保存在 /tmp 上。是的,它是默认的 PHP 会话......你认为我可以尝试使用另一个主机来查看问题是否仍然存在,一旦它在 localhost 上运行? “根据 php.ini 配置,会话保存在 /tmp” – 对于托管服务器的所有用户...?那可能就是那个时候的问题。尝试将session.save_path 配置值设置为用户目录中您具有写入权限的路径。 (如果您没有其他配置权限,可以使用ini_set 完成,但每次都必须在session_start 之前进行。) 【参考方案1】:

我比较了本地主机上的 php.ini 和主机上的那个,register_globals 在本地主机上是 Off,但在服务器上是 On

所以我在服务器上禁用了register_globals,它现在可以工作了。

谢谢。

【讨论】:

请不要说你的脚本还在使用session_register ...? 没有。 Hostgator在cpanel上有一个php.ini quickconfig,我激活了,但是register_globals也被激活了,一旦没有人使用register_globals,我就没有注意到它。 是的,但是register_globals=on 应该只能覆盖会话值,当session_register 用于将值保存到会话中时。

以上是关于会话数据在 Web 主机上变得混乱的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 虚拟主机配置混乱

向后滑动失败时,SwiftUI 导航栏项目变得混乱

JSF 递归 ui:在多个回发中包含混乱的输出树

有解决方案来调整3d数据的大小而又不会使数据变得混乱吗?

具有系统背景颜色的列表在暗模式下变得混乱

解析 iOS 后 JSON 值变得混乱