2011-11-01 433 views
0

我對我的網站使用會話有這個簡單的點擊限制,我只想知道這是否正常,或者是檢查快速頁面刷新的可接受方式。php點擊限制

此代碼位於每個頁面的頂部,在它向db請求數據之前。

session_start(); 
$now = date('Y-m-d H:i:s', time()); 

if ($_SESSION['click'] > date("Y-m-d H:i:s", strtotime("$now - 1 second"))) { 
    exit("You're clicking too fast") ; 
    } 

$_SESSION['click'] = $now; 
+0

不知道'end'是什麼.... – Neal

+0

您是不是已經在這個問題上開了另一個話題? –

+0

你可以把它放到你原來的問題中,而不是開始一個全新的問題:http://stackoverflow.com/questions/7971567/php-click-limit –

回答

2

基本上,這確實相同,但用更少的功能,

session_start(); 

$now = time(); 

if ($_SESSION['click'] > ($now-1)) { 
    exit("You're clicking too fast") ; 
} 

$_SESSION['click'] = $now; 

+0

+1更簡潔。 –

1

我會說這是捕捉快速頁面的一種可接受的方式從正常人刷新。機器人會丟棄會話cookie,並使您的支票無用。

檢查IP不是一種替代方法,因爲您的用戶可以使用來自許多計算機之間共享的網絡和/或公共IP的網站。例如:大學,學校,工作場所(是的,右),美國在線(AOL使用代理!)

雖然你的代碼可以改進:

session_start(); 
$now = time(); 

if ($_SESSION['click'] > ($now - 1)) { 
    exit("You're clicking too fast") ; end(); 
    } 

$_SESSION['click'] = $now; 
+0

如果他正在創建一個遊戲(他有一個雙重話題),那麼丟掉會話cookie會將該bot記錄下來,從而使其移動或動作無用。 – xorinzor