如何阻止用户在一天中的特定时间访问我网站的某个部分?

时间:2011-04-09 22:11:58

标签: php

好的,我在我的网站上有一个聊天功能,我在其他问题中提到过。我学校里有一些孩子喜欢在学校聊天,但我真的宁愿他们只是在学习室聊天,所以我不会因为打断上课时间而遇到麻烦。如何在白天的特定时间段内限制用户在我的网站上的移动?谢谢!我不知道我可能需要什么类型的脚本语言,但我假设PHP,因为这是一个服务器问题。

3 个答案:

答案 0 :(得分:3)

<?php date("H"); ?>

以24小时格式返回当前小时,并带有前导零。

这意味着,你可以这样写:

<?php

if (date("H") == 14)){
   die("You cannot get here right now");
}

?>

这将“死亡”回显页面,并将在一天的第14个小时(下午2:00)准确地返回错误。

为我们提供更多代码/详细信息以获得更深入的答案。

编辑:这是对新问题的扩展答案,询问,

  

我学校的学习室是2:30到3:15,所以我该怎么做?

解决方案:假设学习大厅是允许使用网站(部分)的时间,您可以这样做:

<?php

$bottomValue = 60*14+30;
$upperValue = 60*15+15;
$currentValue = date("G")*60+date("i");

if (($currentValue >= $bottomValue) && ($currentValue <= $upperValue)){
   // everything is OK = put some code here, or ignore this
}
else{
   // well, this is the time they are not allowed to see this, so, let's try:
   die("Sorry, you are not allowed to be here right now.");  
}

?>

要说明其工作原理:您的时基计为分钟数$bottomValue$upperValue。注意它们是如何定义的,它是60分钟乘以小时(14)加上分钟(30)。

所以,14:30是60*14+30,因此,16:20将是60*16+20

然后将基数与当前时间进行比较,并根据if / else语句执行适当的代码。

答案 1 :(得分:2)

您还可以通过网络服务器控制访问权限;例如,Apache allows time-based access controls in mod_rewrite

RewriteEngine On
RewriteCond %{TIME_HOUR} >20 [OR]
RewriteCond %{TIME_HOUR} <07
RewriteRule ^/chat - [F] 

@ RiMMER基于PHP的解决方案可能更容易阅读,编写和修改,但基于服务器的机制不需要在每个页面中插入支票。

答案 2 :(得分:0)

请注意,在使用date()功能时也要考虑服务器的日期/时间设置,因为即使您的服务器的日期和时间与您的服务器的日期和时间不同,您也会在您的网站上进行日期和时间检查指定当天的限制时间(在您的学校),他们仍然可以查看内容。

相关问题