检查用户何时离开PHP页面

时间:2012-05-16 13:26:15

标签: php

好的,我看了this post,有人建议使用此代码检查用户是否离开了页面:

    if($_SERVER['REQUEST_URI'] !== 'page_with_session.php'){
    session_destroy(); // Kill session for all pages but page_with_session.php
}

现在有人可以解释REQUEST_URI是如何工作的,因为我似乎无法在PHP手册中找到它,或者有人可以建议另一种方法来检查用户何时离开页面。

请注意我不能使用Javascript 来完成此项目。

3 个答案:

答案 0 :(得分:3)

使用该代码,您只能告诉用户何时更改服务器上的其他页面。如果他离开其他网站,或关闭标签/浏览器,这将无法正常工作。使用javascript代替或使用会话超时。 REQUEST_URI是当前请求的URI,因此如果用户更改到服务器上的另一个页面,您可以检查它不是“会话页面”并销毁会话。这只有在您不使用重写或类似技术时才有效。

答案 1 :(得分:1)

  

$ _ SERVER是一个包含标题,路径和脚本位置等信息的数组。此阵列中的条目由Web服务器创建。无法保证每个Web服务器都能提供这些服务;服务器可以省略一些,或提供此处未列出的其他服务器。也就是说,在»CGI / 1.1规范中考虑了大量这些变量,因此您应该能够期待这些变量。

     

$ HTTP_SERVER_VARS包含相同的初始信息,但不是超全局信息。 (注意$ HTTP_SERVER_VARS和$ _SERVER是不同的变量,PHP会这样处理它们)

     

'REQUEST_URI'   为访问此页面而给出的URI;例如,'/ index.html'。

(c)php.net

正如你所看到的,它被完美地解释了。当用户离开页面时,您无法执行所需操作。所以@jimpic告诉你使用会话。

答案 2 :(得分:1)

实现此目的的唯一真正方法是保持一个非常短的会话超时,然后使用元刷新的嵌入式iframe,或者调用PHP页面以保持活动状态。