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


How can I block users from accessing a section of my website at a specific time of day?

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

<?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语句执行相应的代码。

您还可以通过web服务器控制访问;例如,Apache在mod_rewrite:

中允许基于时间的访问控制。
RewriteEngine On
RewriteCond %{TIME_HOUR} >20 [OR]
RewriteCond %{TIME_HOUR} <07
RewriteRule ^/chat - [F] 

@RiMMER的基于php的解决方案可能更容易读、写和修改,但是基于服务器的机制不需要在每个页面中插入一个签。

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