PHP&;AJAX会话:AJAX页面上的会话变量与从调用的页面上的会话变量不同

PHP&;AJAX会话:AJAX页面上的会话变量与从调用的页面上的会话变量不同,php,ajax,session,Php,Ajax,Session,我有一个登录页面,而不是销毁一个会话并启动一个新的会话。我在Chrome和Firefox之间有非常不一致的结果 我正在使用以下方法清除会话: session_unset(); session_destroy(); session_start(); $_SESSION = array(); 但是会话中的变量似乎仍然存在,直到我刷新页面,然后它们消失。我的第二个问题是,关键的$\u会话变量在从这个登录页面调用的ajax页面上是不同的。这会在ajax页面上造成大问题和不一致的结果 销毁会话并使用a

我有一个登录页面,而不是销毁一个会话并启动一个新的会话。我在Chrome和Firefox之间有非常不一致的结果

我正在使用以下方法清除会话:

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调用的例子吗?