2011-02-28 173 views
1

我已經實現了一個登錄系統,其中3次嘗試失敗後(使用$_SESSION變量)在用戶的計算機上創建了一個在10分鐘內過期的cookie。現在我知道這當然是不夠的,因爲他們可以刪除cookie。現在,我想知道的是,當我通過IP的&用戶組合連接捕獲不正確的登錄表時,該表什麼時候被清除?當用戶在塊時間到期後成功登錄?限制登錄嘗試保護BFA的

假設這張表填充了1000個條目,我該如何自動清除它?桌子的結構是什麼?

我提出這樣的:
4個領域: ID,IP,用戶名(這將是他們的電子郵件地址),block_time(時間用戶可以再次登錄)?

回答

1

您可以在第一次不成功登錄後創建記錄,並在登錄成功後將其刪除。
第二種方法是創建「修改」列,並使用一些php-cron腳本進行清理。

INSERT INTO user_logins(user_hash, time) VALUES(?,?) 
ON DUPLICATE KEY UPDATE time = now() 

當然,您的主鍵將是user_hash。

+0

這是我的計劃,雖然我從來沒有做過這樣複雜的登錄系統。 – 2011-02-28 08:31:04

+0

我不認爲這會很複雜。您可能希望根據用戶IP和用戶名創建一個散列,並在登錄失敗時將其添加到數據庫,在第二次登錄後,您只需更新用戶記錄,然後在成功登錄後,您將刪除所有記錄,其中user_hash =散列($ userIp。$ userName)。 – mailo 2011-02-28 08:32:39

+0

謝謝,我會嘗試。 – 2011-02-28 08:34:15