用户关闭浏览器而不单击注销时销毁或取消设置会话

时间:2010-05-15 11:49:56

标签: php session

  

可能重复:
  How do I expire a PHP session after 30 minutes?

我正在销毁logout.php中的所有会话var并在用户点击注销时调用它,用户不点击logout.php但直接关闭浏览器。我怎么能删除会话然后???

5 个答案:

答案 0 :(得分:14)

您可以设置会话数据的到期时间,使用每个session_start调用对其进行测试,并在会话过期时销毁该会话:

session_start();
if (!isset($_SESSION['EXPIRES']) || $_SESSION['EXPIRES'] < time()+3600) {
    session_destroy();
    $_SESSION = array();
}
$_SESSION['EXPIRES'] = time() + 3600;

答案 1 :(得分:13)

你做不到。但是,会话cookie通常在没有过期时间的情况下发送,这意味着它们会在浏览器关闭时被删除,因此无论如何会话都会丢失。

答案 2 :(得分:3)

当浏览器窗口关闭时,PHP会话应自动过期,前提是您不会修改会话Cookie过期时间。如果没有发生这种情况,那么我会假设您已经以某种方式对其进行了修改,我们需要进一步的细节来提供帮助。

答案 3 :(得分:1)

会话可以设置为简单到期服务器在一段时间后没有收到客户端的消息。那是你想要的方向......

马丁

答案 4 :(得分:1)

如果您没有为会话cookie设置过期时间,则会在用户关闭浏览器时将其删除,这对于大多数实际用途具有相同的效果(除非您担心存储或安全性)。如果这还不够好,您可以将会话设置为非常快速到期,并通过AJAX定期刷新它们。