使用JQuery/AAJAX取消设置PHP会话


Unsetting a PHP session with JQuery / AJAX

index页面上的按钮:

$('#killsession').click(function() {
    $.get('killsession.php');
    alert("OK");
});

killsession.php:

<?php
session_start():
session_destroy();
?>

使用此按钮终止会话后,index上的任何会话式相关功能仍然有效(会话变量仍然设置/存在)。例如,我有一个计数会话变量,当我单击某个按钮时,该变量会递增。此计数变量在终止会话后不会在计数中失去位置。

是否可以使用JQuery按钮终止会话?

所有PHP会话项都是在首次加载页面时加载的。只要页面打开,它们仍在页面/浏览器内存中。您需要在终止会话后重新加载页面。您可以使用javascript window.location.href=window.locationhref

$('#killsession').click(function() {
  $.get('killsession.php', function() {
    alert("the server page executed");
    //Here you may do further things.
    window.location = window.location;
  });
});

killsession.php

session_start();
$_SESSION = array();
$params = session_get_cookie_params();
setcookie( session_name(), '', time() - 42000,
    $params["path"],
    $params["domain"],
    $params["secure"],
    $params["httponly"]
);
session_destroy();
exit('OK');

确保您只在ajax函数的回调中做其他事情(如检查会话)。回调中的任何内容都将在收到来自ajax服务器页面的响应后执行。

$('#killsession').click(function() {
    $.get('killsession.php',function(){
       alert("the server page executed");
       //Here you may do further things.
    });
});