2010-10-27 26 views
0

我在網站上有一個計時器,用戶將只能在每個*秒/分鐘/小時點擊。每個用戶都在用戶表中寫入和讀取值的計時器值。數據庫中的值是用戶必須等待的秒數。PHP定時器安全

我已經想出瞭如何使定時器從sql數據庫中的正確值倒計時,但我還沒有弄清楚如何使它在servside安全。

什麼是檢測點擊時間最早的最有效方法?

回答

0

嗯,當用戶點擊時,你記錄時間(服務器時間),從數據庫中減去數值,看看它是否小於設置的值。

也許你應該提供更多的細節...

+0

我會盡量給予儘可能多的細節。你想知道什麼? – Kraffs 2010-10-27 18:02:10

+0

你如何認識用戶?通過cookie?會議?或者它是一個登錄用戶?也就是說,我認爲檢查用戶是否已經點擊了計時器很簡單,在這種情況下,您只需減去數值並確定是否可以接受點擊。如果是第一次點擊,只需存儲該值即可。 – hummingBird 2010-10-27 18:09:06

+0

關於安全性,只要確保負責時間管理的腳本不能由一個人調用 - 在另一個腳本中定義一個常量,並檢查在調用「時間管理」腳本時是否定義了該常量。 – hummingBird 2010-10-27 18:10:20

0

我在Playcat上。

首先點擊將時間存儲在數據庫中。 第二次點擊選擇第一次點擊; 檢查現在 - firstclick < userTimervalue

如果是這樣,則用戶沒有等待足夠長的 回報虛假 ELSE返回true和更新firstclick到CURRENTTIME。

我會補充的唯一的事情是你應該添加clientside JavaScript來模仿計時器,它可以減少對數據庫的檢查。

0

您可以獲取整個記錄並使用PHP進行比較,也可以發出SQL命令對其進行檢查。假設MySQL的:

SELECT IF(COUNT(id), 1, 0) AS allowed FROM some_table 
WHERE NOW() > DATE_ADD(timestampCol, INTERVAL 5 MINUTE) AND user_id = :userid; 

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

不知道什麼是有「安全」做,因爲它通常被稱爲雖然。如果您的問題是「我如何確保應用程序安全」,則問題太廣泛,無法快速回答。如果你的問題是「如何確保它有效」,那麼就是這樣。