我正在尝试在 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 页面有关?