Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在强制登录之前,允许用户访问网站的时间限制_Javascript_Php_Mysql - Fatal编程技术网

Javascript 在强制登录之前,允许用户访问网站的时间限制

Javascript 在强制登录之前,允许用户访问网站的时间限制,javascript,php,mysql,Javascript,Php,Mysql,我不确定使用哪种语言(php、Java或其他),但我需要限制用户在出现强制登录弹出窗口之前浏览我们网站的时间 例如: 未注册用户浏览我们的网站,在浏览1分钟后,我们会显示一个弹出窗口,说明他们需要登录才能继续浏览 如果有人有更好的方法,我很乐意去适应 非常抱歉说得非常含糊。正如JustinM151或Mörre和其他allready指出的那样,您可能会被告知,所有实现绕过此任务都是“不安全的” 您可以使用会话进行类似操作 session_start(); $expire_seconds = 60

我不确定使用哪种语言(php、Java或其他),但我需要限制用户在出现强制登录弹出窗口之前浏览我们网站的时间

例如:

未注册用户浏览我们的网站,在浏览1分钟后,我们会显示一个弹出窗口,说明他们需要登录才能继续浏览

如果有人有更好的方法,我很乐意去适应


非常抱歉说得非常含糊。

正如JustinM151或Mörre和其他allready指出的那样,您可能会被告知,所有实现绕过此任务都是“不安全的”

您可以使用
会话
进行类似操作

session_start();

$expire_seconds = 60; // expire in 60 seconds

if( ! isset( $_SESSION['visit_expire'] ) {
    $_SESSION['visit_expire'] = time() + $expire_seconds;
}

if( !$isLoggedIn && $_SESSION['visit_expire'] > time() ) {
    // force login
    // display whatever 
}

您将希望在Javascript中执行此操作,以使其停止跟踪他们,但是,如果您希望在时间限制之后限制进一步浏览,则可以使用PHP/会话变量来阻止他们移动到新页面

当他们第一次访问您的站点时,设置一个会话变量

session_start();
$_SESSION['browseTime'] = date('U'); //Seconds since Unix Epoch
然后在每个页面加载检查他们的浏览时间与当前时间的比较

if(!empty($_SESSION['browseTime'])) {
    if(date('U') - $_SESSION['browseTime'] > $secondsAllowed) {
        header('location: login.php?timesup=y');
    }
}
当然,他们可以通过清除cookie轻松绕过此方法或javascript方法


一种更难绕过的方法是将他们的时间存储在与他们的IP地址绑定的数据库表中。但这也可以忽略。

您需要使用JavaScript在客户端完成此操作。也要知道有很多方法可以解决这个问题。@Brad尽管如果用户不断更改页面,计数器不会一直被重置吗?Java不是JavaScript。他是想在客户端还是服务器端执行此操作取决于-我猜他只是想在超时到达时阻止转到新页面。只有当他还想限制用户在当前页面上花费的时间时,他才需要在客户端这样做,例如,当有人阅读一个100页长的文档,这是一个很长的网页,这将给他一个小时的免费阅读时间:)无论如何-考虑到模糊的问题,我们只能说“是”;-)使用JavaScript。如果你不想受到太多的限制。您可以创建一个cookie,并可以通过JavaScript更新其值,直到您希望用户在站点上。为零后,您可以弹出登录窗口。但若你们想限制用户太多,并没有其他选择跳过弹出窗口。然后使用服务器端的任何东西。你把我揍了一顿,但这也很容易被绕过。怎么会呢?会话是服务器端的,而不是客户端的@Justin M151 Justin M151请解释您的opinion@ins0在新的“匿名浏览”窗口中打开每个新页面。这就是我在《经济学人》上获得免费文章的方式:)新的anon.窗口没有你的会话cookie。。。它不保存cookies,因此对于网站来说,您总是一个新的访问者,每个新的anon.窗口都有一个新的访问者。您可能有一个观点,但如果用户没有通过DB登录,并使用会话,那么这将变得无用。先突破几个挑战@莫尔