2012-08-03 89 views
-1

即時向我的論壇添加評論部分,我想添加一個延遲,也許30秒左右,以阻止與驗證碼一起發送垃圾郵件。創建發佈評論之間的延遲

最好的辦法是做什麼?只有這樣我才能想到的是使用cookie,還有其他建議嗎?

+0

SO是我看到這樣的延遲和驗證碼的唯一地方! – 2012-08-03 12:31:16

+0

由於用戶/客戶端可以刪除Cookie,因此Cookie確實是錯誤的。 – CodeZombie 2012-08-03 12:36:54

回答

0

當用戶發佈他們的意見,在會話寫入當前時間戳,並將其添加另外的30秒時:

$_SESSION['postedTime'] = time() + 30; 

當您想查詢如果有30秒過去了,獲取當前時間戳並加以比較:如果當前時間戳更大然後一個會話,然後在30秒傳遞:

$timestamp = time(); 
if($timestamp > $_SESSION['postedTime']) 
{ 
    // allow posting 
} 
else 
{ 
    // decline 
} 

爲了增強安全性,可以插入用戶的IP +後時間戳在數據庫中。

+0

當我把這樣的代碼放到這裏時,它會一直說下降,當我換一個<它工作的很完美。 – Exoon 2012-08-03 12:54:54

1

你可以使用PHP會話做這樣的事情,但不知道它是多麼'愚蠢'的證明。

的想法是做一些事情:

if(isset($_POST['cmdComment'])){ 
    $_SESSION['comment_posted'] = time(); 
} 

然後,你可以有一個函數說checkTime(),你可以把裏面就有減去從它現在的時間會話值。如果差異爲>= 30秒,則繼續發佈並將$_SESSION['comment_posted']設置爲新時間,否則忽略發佈請求。

0
  1. 將註釋插入數據庫時​​,請務必記錄用戶和時間戳。
  2. 當用戶再次發帖時,檢查他發佈的最後評論是否是30秒之前。
  3. 對付這種因此
0

的論壇通常有成員,以及至少我不知道任何沒有它。

現在,如果你發表評論我假設你把一個表中的所謂像一個ID,POST_ID,USER_ID,留言評論,POST_DATETIME

ATLEAST,這是我會怎麼做。

現在你有用戶最後評論某個帖子時的日期時間。現在,您可以查詢數據庫,他或她是否可以再次發表評論