【发布时间】: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() 之前,但问题仍然存在。