2013-04-24 34 views
1

我在網頁上的每個帖子下都有一個「LIKE」按鈕。當用戶點擊'LIKE'按鈕時,它通過AJAX發送一個GET請求到一個向mysql數據庫表插入一行的like.php頁面。在用戶點擊LIKE按鈕後,LIKE按鈕消失。如何防止我的LIKE按鈕在客戶端以及服務器端遭到垃圾郵件

我想確保在用戶點擊'LIKE'按鈕之間應該有3秒鐘的延遲。我的意思是如果用戶點擊帖子上的'LIKE'按鈕,並立即點擊第二篇文章中的LIKE按鈕,並且如果這個時間少於3秒,則應該拒絕LIKE按鈕處理。

現在,問題是我應該在哪裏將此檢查放在客戶端或服務器端。如果一個服務器端,一個解決方案出現在我的腦海。

我認爲把這個代碼like.php頁

if(isset($_SESSION["last_like_time"])) 
{ 
    $last_like_time = $_SESSION["last_like_time"]; 
    $time_diff = time()-$last_like_time; 
    if($time_diff<3) 
    { 
     die("ERROR: You must wait at least " . (3 - $time_diff) . " seconds to Like another Post"); 
    } 
    $_SESSION["last_like_time"] = time(); 
} 
else 
{ 
    $_SESSION["last_like_time"] = time(); 
} 

我的問題是,這是一種有效的方法來檢查服務器端的時間差?如果不是哪個是最好的方法?

我的第二個問題,如何在客戶端執行此操作而無需轉到SERVER端?

回答

0

你不能在客戶端安裝這樣的安全。因爲客戶可以改變。如果用戶真的想垃圾你,他可能不會使用瀏覽器。

在服務器端用php,time()很好,可以檢查當前用戶的最後一個「like」動作。

如果你真的想把這個安全性放在客戶端,你必須使用一些JavaScript。

+0

我使用的是正確的方法? – 2013-04-24 12:52:41

+0

總有一種更好的方法。但在生產環境中,你有時無法做任何你想做的事情。你可以在你的php代碼中檢查自上次請求以來的時間,沒關係。但是你也可以使用Apache來拒絕來自同一個URL的太多請求。 – Magus 2013-04-24 12:59:01

相關問題