2011-04-09 24 views
0

好的,所以我在我的网站上有一个聊天功能,我在其他问题中提到过。我校有一些孩子喜欢在学校聊天,但我宁愿他们在学习厅聊天,所以我不会因为打扰上课时间而陷入困境。在一天中的特定时间段内,如何限制用户在我的网站上的移动?谢谢!我不知道我可能需要什么类型的脚本语言,但是我假设PHP,因为这是一个服务器问题。如何阻止用户在一天的特定时间访问我网站的某个部分?

回答

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

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

这意味着,你可以写这样的事情:

<?php 

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

?> 

这将“死”相呼应的页面,并且将返回错误,而不是,正是一天中的14小时内(2:00 PM )。

给我们更多的代码/细节来得到更深的答案。

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

自习在我的学校是2:30到3:15,所以我将如何做呢?

SOLUTION:假设自习的时候,当学生们允许使用(部分)的网站,你会做这样的事情:

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

+0

我学校的学习时间是凌晨2点半到3点15分,那么我该怎么做? – Matthew 2011-04-10 14:44:00

+0

谢谢@RiMMER,我弄不明白 – Matthew 2011-04-10 18:20:11

+0

说实话,这是一种不寻常的情况,它也给了我一些难以想象的想法,但我想我想出了一个非常干净的解决方案。希望对你有帮助! – 2011-04-10 18:22:03

2

您还可以通过您的Web服务器控制访问; 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的解决方案可能会更容易读,写和修改,但基于服务器的机制,不需要插入校验到每一个网页。

+0

他正在谈论“他的网站的一部分”,这可能只是一个特定的php文件(正在被包含在网站中),并且可能不会被你的方法禁用。如果我错了,那么你的方法也很棒。 – 2011-04-09 22:27:08

+0

@RiMMER,好点 - 根据他的网站的写法,我的机制或机制将更容易准确地确定哪些特定部分是有时间限制的。任何一个人都可以做同样的工作,但清理它可能会有很大的不同。 :) – sarnold 2011-04-09 22:29:09

0

请注意,当您使用date()函数时,请考虑您的服务器的日期/时间设置,因为如果您的服务器的日期和时间与您指定的受限时间不同,即使您在网站上进行了日期和时间检查(在你的学校)他们可能仍然会看到一些东西。

相关问题