【发布时间】:2013-05-27 01:24:40
【问题描述】:
我正在尝试在 php 中使用会话,但并没有走得太远。我所有的 php 页面都是通过 ajax 从单个“门户页面”调用的。我使用会话在 ajax 调用之间存储信息。我有一个包含文件,它是每个 ajax 页面中的第一个文件,其中 session_start 作为第一个方法调用。会话数据似乎保存正常。但是,当我在用户注销页面上完成会话时,我遇到了摆脱会话的问题。 注销页面是一个 ajax 页面,它基本上是这样做的:
session_start();
$_SESSION = array();
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,$params["path"], $params["domain"], $params["secure"], $params["httponly"]);
}
//code to unset session variables
session_destroy();
如果我尝试将会话变量写入注销页面上的屏幕,如您所料,它是空的。但是,如果我刷新门户页面并将 session_id 显示到屏幕上,它与上一个会话中的 ID 相同,该会话应该被破坏。如果我关闭浏览器并再次打开它,我有一个新会话
调用注销页面后,php 会话 cookie 仍在浏览器 cookie 中。自然,页面刷新将加载此 cookie。为什么cookie没有被删除?我的代码有问题还是与它是一个 ajax 页面有关?
【问题讨论】:
-
你为什么要在那里设置一个cookie?你为什么打电话给
$_SESSION = array();? -
您是否仍然将会话 ID 保存在 url 或隐藏的表单字段中?
-
你确定你不是程序员吗?
-
有什么问题?如果您在服务器上销毁会话并删除整个 SESSION 数组,则没有更多数据与该会话名称相关联
-
尝试检查浏览器 cookie(如果找到)。也许您的浏览器没有删除 cookie。
标签: php session-cookies