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

时间:2011-05-03 11:17:58

标签: php ajax session

我有一个登录页面而不是破坏会话并开始一个新会话。我在Chrome和Firefox之间的结果非常不一致。

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

session_unset();
session_destroy();
session_start();
$_SESSION = array(); 

但是在我刷新页面然后它们消失之前,会话中的变量似乎仍然存在。我的第二个问题是,在此登录页面调用的ajax页面上,关键的$ _SESSION变量是不同的。这会在ajax页面上造成大问题和不一致的结果。

销毁会话并使用可供ajax页面使用的新变量设置会话的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

如果你正在使用会话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 新会话将在下一个请求中创建。

PS:手册说明:

  

仅对不使用session_unset()的较旧弃用代码使用$_SESSION

答案 1 :(得分:1)

我找到了:

session_unset();
session_destroy();
session_start();
$_SESSION = array();

非常不可预测,并且在浏览器之间产生了不同的结果,这对于PHP来说是不寻常的。

要解决此问题,我只需将其替换为:

session_start();
$_SESSION = array(); 

我知道这并不能完全清除并替换会话,但我真正需要的是要清除的会话。会话具有相同的session_id这一事实在我的场景中并不重要。

希望这可以帮助一些人和我一样的母马!