【问题标题】:php sessions get mixedphp 会话混杂在一起
【发布时间】:2011-07-21 16:50:57
【问题描述】:

当我使用 $_GET 变量(id)(如 mypage.php?id=1 或 ?id=2 等)存储用户配置文件时,我有一个名为 mypage.php 的页面...

当我登录并且我是 id=1 时,当我转到 id=2 时,我会将此用户的 ID 作为我的会话,并且当我转到此配置文件时,我没有任何变量来设置此用户的会话。

我只给用户设置了会话user_id作为登录时的用户id...就像

$_SESSION["user_id"] = 1;//fetched via the user login details

它会自动执行...

此外,当我执行 ajax 请求时,我的会话会无缘无故地丢失...

这发生在 LIVE 服务器上,但不在本地主机上。

编辑:我注意到我的会话在服务器文件夹中混杂在一起,我有 2 个应用程序使用同一个会话来存储登录的用户 ID(user_id 是会话名称),所以当我登录第一个应用程序并转到第二个应用程序,即使我没有注册,我也显示为已登录)...那为什么会发生这种情况?

【问题讨论】:

  • 你确定在你的 AJAX 页面上运行 session_start() 吗?
  • 我将我的 config.php 文件包含在所有页面的顶部。这是我的 config.php,
  • 我注意到我的会话混淆了,因为我的站点中有多个脚本,并且我在某些项目中使用相同的会话变量(user_id)......我可以通过任何方式使会话工作在文件夹内而不是整个网站内?
  • @fxuser:php.net/manual/en/function.session-set-cookie-params.php 让您控制会话 cookie 的参数 - 在 cookie 上设置路径,您可以拥有每个目录的会话。
  • @Marc B:我尝试使用 session_set_cookie_params(0, '/path/to/folder/', '.website.com');在 session_start() 之前,但问题仍然存在。

标签: php ajax session


【解决方案1】:

在调用session_start() 之前,请先调用session_name() 以便为每个应用程序的会话设置一个唯一名称。

【讨论】:

  • 我试过了,但问题仍然存在。在同一个文件夹中,当我转到其他用户配置文件时,它会将我的 user_id 会话更改为该用户,而我没有执行此操作的功能,它也为 Nulls我为我的用户准备的其他一些会话。
猜你喜欢
  • 1970-01-01
  • 2010-11-05
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
相关资源
最近更新 更多