代码之家  ›  专栏  ›  技术社区  ›  Steven

当用户离开页面时,如何重置会话?

  •  1
  • Steven  · 技术社区  · 14 年前

    我创造了 a session 跟踪特定页面上的某些用户操作。

    当用户离开特定页面(但仍在同一个站点上)时,我需要重置会话。

    我可以设置会话过期的计时器,但这不是我想要的。

    如何在页面导航上重置会话?

    5 回复  |  直到 14 年前
        1
  •  4
  •   Rene Terstegen    14 年前

    只需将重置会话作为加载新页面时的第一件事。

        2
  •  0
  •   Nathan Hess    14 年前

    你有一个所有流量都经过的单一页面吗?如果是这样,你可以做一个简单的检查

    if ($current_page != $session_page) {
        $_SESSION = array();
    }
    

    如果您没有一个页面,所有的流量都会通过,那么您需要在其他页面的开头重置会话。

    $_SESSION = array();
    
        3
  •  0
  •   SW4    14 年前

    或者您可以使用

    unset($_SESSION);
    

    session_destroy();
    

    尽管注意到这些处理方式与上面的建议略有不同。注意第二个(会话销毁)将要求您在需要时重新启动会话。

        4
  •  0
  •   AndreKR    14 年前

    您永远不能确定会话是否真的被破坏。

    但是有一个古老的技巧在聊天应用程序中使用,其中一个“…正在离开“消息将被打印:卸载时,只需打开一个弹出窗口 window.open() 这会调用您的注销页面,然后自动关闭。

        5
  •  0
  •   wajiw    14 年前

    我过去所做的就是在卸载到未设置的页面时进行一个快速的Ajax调用,就像这个页面上的其他答案一样。

    <script>
     function myAjaxCall(){
      //if using jquery
      $.ajax('unset.php');
     }
    </script>
    
    <body onunload="myAjaxCall()">