PHP&;AJAX会话:AJAX页面上的会话变量与从调用的页面上的会话变量不同
我有一个登录页面,而不是销毁一个会话并启动一个新的会话。我在Chrome和Firefox之间有非常不一致的结果 我正在使用以下方法清除会话:PHP&;AJAX会话:AJAX页面上的会话变量与从调用的页面上的会话变量不同,php,ajax,session,Php,Ajax,Session,我有一个登录页面,而不是销毁一个会话并启动一个新的会话。我在Chrome和Firefox之间有非常不一致的结果 我正在使用以下方法清除会话: session_unset(); session_destroy(); session_start(); $_SESSION = array(); 但是会话中的变量似乎仍然存在,直到我刷新页面,然后它们消失。我的第二个问题是,关键的$\u会话变量在从这个登录页面调用的ajax页面上是不同的。这会在ajax页面上造成大问题和不一致的结果 销毁会话并使用a
session_unset();
session_destroy();
session_start();
$_SESSION = array();
但是会话中的变量似乎仍然存在,直到我刷新页面,然后它们消失。我的第二个问题是,关键的$\u会话变量在从这个登录页面调用的ajax页面上是不同的。这会在ajax页面上造成大问题和不一致的结果
销毁会话并使用ajax页面可用的新变量对其进行设置的最佳方法是什么?如果使用会话cookie,还必须“删除”它们
$cookie_params = session_get_cookie_params();
setcookie(
session_name(),
false,
strtotime('2000-01-01')
$cookie_params['path'],
$cookie_params['domain'],
$cookie_params['secure']
);
当然,在您发送响应之前,浏览器不会删除cookie。新会话将在下次请求时创建 注:手册规定: 仅将
会话\u unset()
用于不使用$\u会话的较旧的不推荐使用的代码
我发现:
session_unset();
session_destroy();
session_start();
$_SESSION = array();
这是非常不可预测的,并且在不同的浏览器之间产生不同的结果,这在PHP中是不常见的
要解决此问题,我只需将其替换为:
session_start();
$_SESSION = array();
我知道这并不能完全清除和替换会话,但我真正需要的是清除会话。会话具有相同会话id的事实在我的场景中并不重要
希望这能帮助一些和我有同样母马的人 您能提供一些进一步的代码来查看您在哪里破坏会话,以及如何/在哪里调用没有消失的会话变量吗?您还可以举一个AJAX调用的例子吗?