【问题标题】:different content for the same session?同一会话的不同内容?
【发布时间】:2014-06-25 20:04:34
【问题描述】:

我在同一个域中有 2 个 php 页面。一个在根目录下,另一个在下面的 3 个文件夹中。 A 在两个文件中也有以下代码:

[...]
session_start();
var_dump(array('id' => session_id(), 'name' => session_name(), 'content' => $_SESSION));
die();
[...]

id 相同,name 相同,content 不同...

如果我在其中任何一个中执行session_regenerate_id(),两个页面都会有新的会话ID,但content 仍然不同。 清理浏览器缓存并清除所有现有 cookie 无济于事。

我错过了什么?

【问题讨论】:

  • 各种设置可能因目录而异。如果您将ini_get_all('session') 的输出添加到您的转储中,您会看到什么不同? (通常的嫌疑人:其他 save_handler 或 save_path)。
  • 只看你提供的代码,不可能,肯定是其他地方有错误。
  • 你能粘贴 cookie 标题(使用开发控制台或萤火虫)吗?
  • @Wrikken:重点是你的,'session.save_path' 不同。所以有两个同名但内容不同的文件。感谢您的帮助!!!
  • 好的,我将其推广为答案。

标签: php session-cookies


【解决方案1】:

各种会话设置可能因目录而异。请注意,这些可以在 php 配置、主机配置、per-dir 配置中设置(在 apache 中:.htaccess),但也可以在代码中

要确定有什么不同,在您使用会话的代码中检查ini_get_all('session') 的输出可能会显示设置的不同。

对于所描述的症状(不同目录的会话 id 相同,但存储的内容不同),最可能的原因是 save_handler 不同(使用另一种机制来存储会话,例如文件 vs .memcached)或save_path 不同(另一个位置用于存储会话)。在这种情况下,根据 cmets,它是 save_path

请注意,如果 2 个目录中的 session-id 不同,最可能的原因是 cookie_path 设置不正确,如果子域之间不同,请查看 cookie_domain 设置。

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 2019-05-28
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多