0

我正在开发一个网站,如果我出于某种原因需要引入安全性,我的网站会在 10 分钟不活动后自动将用户注销。行为是,在大约 8 分钟不活动时,会弹出一个 jquery ui 对话框,警告用户他们即将超时。用户可以选择保持登录状态、立即退出或什么都不做,然后在 10 分钟结束时强制退出。我通过一个超时(没有鼠标/键盘事件)的javascript代码片段来实现这一点,并在用户执行我认为的“活动”时重置。

我的问题是我可以让这个东西为我的单个网页运行,但不知道如何将它用于完整的域。我也想过用 cookie 来实现这一壮举,但不太确定。如果有人能建议我为我的任务采取什么方法,那将是很好的选择。bly 与代码示例

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

4

3 回答 3

1

我建议不要使用 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);

祝你好运!

于 2012-07-05T01:56:20.753 回答
0

您可以通过将他们的会话 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 向他们显示对话框警告他们的会话即将过期

于 2012-07-05T01:55:27.513 回答
0

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

这种东西——

<?php

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

?>
于 2012-07-05T01:58:18.927 回答