【问题标题】:how to kill session from javascript如何从 javascript 中终止会话
【发布时间】:2010-11-25 07:46:44
【问题描述】:

很多时候我们使用会话变量在页面中存储数据。当用户从一个页面跳转到另一个页面时,我需要退出 JavaScript 来终止会话。可能吗。如果是,请指导我。

提前致谢

【问题讨论】:

  • 您想终止会话,还是删除会话变量/键?
  • 我想他想用这个变量来描述他的意思。他想彻底杀死它..

标签: javascript


【解决方案1】:

您需要告诉服务器终止会话变量。

做到这一点的唯一方法是从 javascript 中使用 Ajax 来调用一些自定义页面,例如,将要删除的会话密钥作为变量。

【讨论】:

    【解决方案2】:

    你必须触发一个 AJAX 事件,例如:

    function kill_session() {
        if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
    
        xmlhttp.open("GET","session_destroyer.php",false);
        xmlhttp.send();
    
        document.getElementById("id_of_a_hidden_div").innerHTML=xmlhttp.responseText; 
    }
    

    你的 session_destroyer.php 可能看起来像:

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

    【讨论】:

    • 请注意,不能保证您的代码会运行。用户可能会删除它,浏览器可能会决定不运行代码,...
    • 你是什么意思?例如,如果您在正文中声明它 onUnload="kill_session()" 那么实际上每个浏览器都会运行它..?
    • 您需要了解一些有关客户端-服务器概念的内容。客户端上的任何东西都在客户端的控制之下,并且可以由他更改。
    【解决方案3】:

    删除会话 cookie。对于 PHP,它被称为 PHPSESSID。如果您这样做,浏览器将丢失会话 ID,并且该客户端将无法再访问实际的会话数据。

    请参阅此处了解如何处理来自 JavaScript 的 cookie:http://www.quirksmode.org/js/cookies.html

    【讨论】:

    • 你的意思是,会话保存在cookie中?这意味着如果您禁用 cookie,您将无法使用任何支持会话的网站..?
    • @Florian 那不正确。会话的 ID 大多数时候保存在 cookie 中。实际的会话数据保存在服务器上。但是,如果您删除带有 ID 的 cookie,客户端会丢失会话,这就是我认为提问者想要的。实际数据将在稍后被垃圾收集器删除,但我们不应该关心这一点,因为没有 ID 就无法访问它。
    • 啊,好吧,我不知道。谢谢;)
    【解决方案4】:

    Session 对象是服务器对象,你不能直接从 javascript 访问它。 您应该创建对服务器的 ajax 调用以终止会话。 您可以使用 jquery 来做到这一点,非常简单,请查看此链接。 http://api.jquery.com/jQuery.ajax/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      相关资源
      最近更新 更多