2011-04-09 61 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()函數時,請考慮您的服務器的日期/時間設置,因爲如果您的服務器的日期和時間與您指定的受限時間不同,即使您在網站上進行了日期和時間檢查(在你的學校)他們可能仍然會看到一些東西。

相關問題