【问题标题】:Unsetting a PHP session with JQuery / AJAX使用 JQuery / AJAX 取消设置 PHP 会话
【发布时间】:2012-08-04 01:28:31
【问题描述】:

index 页面上的按钮:

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

killsession.php:

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

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

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

【问题讨论】:

    标签: php jquery session


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      $('#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');
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 不一定能解决我的问题,但仍然可以衡量良好的编码。+1
        猜你喜欢
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        • 2016-10-01
        • 2013-02-17
        • 2015-10-08
        • 2018-04-04
        相关资源
        最近更新 更多