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

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

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

我找到了this postthis 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 之前进行。)

标签: php session unset


【解决方案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 用于将值保存到会话中时。
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 2018-10-28
  • 2013-07-01
  • 2015-10-06
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多