当用户closures浏览器而不点击注销时销毁或取消设置会话

可能重复:
如何在30分钟后过期PHP会话?

我正在销毁logout.php中的所有会话variables,并在用户点击注销时调用它,什么是用户不会点击logout.php,而是直接closures浏览器。 我怎样才能删除会话呢?

您可以为会话数据设置过期时间,并使用每个session_start调用进行testing,并在会话过期时销毁该会话:

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

你不能。 然而,会话cookie通常没有过期时间,这意味着当浏览器closures时被删除,因此会话丢失。

当浏览器窗口closures时,PHP会话将自动失效,但不会修改会话Cookie过期时间。 如果这没有发生,那么我会假设你已经以某种方式修改了这个,我们需要进一步的细节来协助。

会话可以设置为在一段时间之后简单地过期服务器不会从客户端听到。 这是你想要看的方向

马丁

如果您没有为会话cookie设置过期时间,那么当用户closures浏览器时,该浏览器将被删除,对于大多数实际用途(除非您担心存储或安全性),此浏览器具有相同的效果。 如果这还不够好,您可以将会话设置为非常快速,并定期通过AJAX进行刷新。