1

我正在尝试调用一个破坏会话并在其后重新加载页面的 php 脚本。

$(document).bind("active.idleTimer", function(){
  $.post("data.php?data=active");
  location.reload();
});

数据.php

if($_GET['data'] == 'active') {
  session_destroy();
}

它不会破坏会话,只有当我手动打开 url data.php?data=active 时它才会这样做,这是为什么呢?谢谢!

4

3 回答 3

2

问题是您发送请求的脚本正在使用它自己的会话。所以,用户有一个会话,它不同于你发送“刷新空闲状态”请求的会话。

一种解决方案是使用 javascript 启动一个计时器,当计时器用完时,只需刷新页面。

这就是为什么它只在您实际访问 data.php 页面时才有效。

于 2013-03-12T14:30:36.547 回答
0

如果要使用存储在$_SESSION数组中的数据,则需要使用 启动或恢复现有会话session_start()。在你的 data.php 中,试试这个:

if($_GET['data'] == 'active') {
  session_start();
  session_destroy();
}

请在向客户端发送任何输出之前session_start()考虑应该使用的内容。

希望能帮助到你!

于 2013-03-12T14:36:00.950 回答
-1

修改的:

$.post("data.php", {data: active}, function(whatever){} 

并在您的 php 文件中使用:

$_POST['data'];
于 2013-03-12T14:28:13.463 回答