网站而不是单个网页超时


Timeout for website rather than single webpage

我正在开发一个网站,由于原因我需要引入安全性,我的网站在用户处于非活动状态 10 分钟后自动注销。该行为是在大约 8 分钟不活动时,会弹出一个 jquery ui 对话框,警告用户即将超时。用户可以选择保持登录状态、立即注销或不执行任何操作,并在 10 分钟结束时强制注销。我通过一个 javascript 代码片段来实现这一点,该代码片段超时(无鼠标/键盘事件)并在用户执行我认为的"活动"时重置。

我的问题是我可以让我的单个网页运行这个东西,但不知道如何将其用于完整的域。我也想过饼干来实现这一壮举,但不是很确定。如果有人能建议我应该遵循什么方法来完成我的任务,那将是很好的机会。Bly 与代码示例

在我的整个域而不是单个网页上运行此超时脚本。可能使用饼干或其他东西。

我建议不要使用javascript并创建一个完整的PHP解决方案。

这可以通过在每个PHP页面上为用户提供一个在10分钟后过期的cookie来实现。这样,每次访问都会更新cookie,如果他们在十分钟后回来,cookie就会消失,系统将不再识别它们。

我还建议不要会话,它们很容易变得混乱,如果您想扩展到多台机器进行负载平衡,则几乎无法管理。这不是一个现实的生产工具。

每个页面都调用它 - 这将检查他们是否已经有一个cookie,如果他们有,它将以相同的值更新十分钟(60秒乘以十分钟)。您可以将"用户"的 cookie 名称更改为您想要的任何名称。

if(isset($_COOKIE['user'])){
     setcookie('user', $_COOKIE['user'], time()+60*10);
     //put your user validation code here to make sure the cookie is real
     //then you can put your logged in specific data under it.
}

要首先授权用户(很可能在用户登录时),您可以执行以下操作:

setcookie('user', $value, time()+60*10);

如果您想注销某人,您可以这样做:

setcookie('user', '', 0);

祝你好运!

您可以使用会话和/或 cookie 来处理此问题。您使用它们的方式是,在您网站的每个页面中,您首先检查cookie/会话,然后才继续。因此,如果您的用户注销一次,并尝试转到网站上的另一个页面,他/她首先必须登录,然后才能继续,因为该会话不再可供该用户使用。

这种东西——

<?php
if( $this->session->userdata('logged_in') == FALSE )
{
    // Login again 
}
else
{
    // Display the page
}
?>

您可以通过将他们的会话 cookie 设置为在 10 分钟后过期来执行此操作。使用 session_set_cookie_params() 设置 Cookie 的持续时间(第一个参数)。

session_set_cookie_params(600, '/', 'www.example.com', false, false);
session_start();

请确保在session_start()之前调用它。

然后,您将使用 JavaScript 检查 cookie 的 expires 参数。如果它接近过期时间,那么您将使用相同的JavaScript向他们显示对话框,警告他们的会话即将过期