2013-02-24 33 views
-2

我做了一個禁止腳本,它更新成員列表,並把SET banned=Yes WHERE username=$_POST[username]PHP計時禁令?

但現在我想作定時的禁令,比如如果用戶得到禁止了一天,他將他的禁令時間後,聯合國禁止。

有誰知道我該怎麼做?我對MySQL和時代不太好。

+2

這很危險'SET banned = YES WHERE username = $ _ POST [username]'您需要在將代碼放入sql語句之前清洗您的代碼。 – 2013-02-24 16:06:59

回答

2

列只需更改爲類似「BannedUntil(日期時間)」設置爲一天到未來:

UPDATE Users SET BannedUntil = DATE_ADD(NOW(), INTERVAL 1 DAY) WHERE username = <username> 

,並檢查用戶是否禁止

SELECT 1 FROM Users WHERE BannedUntil > NOW() AND username = <username> 

如果我們排回去,用戶被禁止,否則不會。

2

您節省了禁令的時間以及禁令的持續時間。

僞代碼:

if (current_date == ban_time + ban_duration) { unban_user } 
0

必須保存禁止時間(UNIX時間戳字段或日期時間),也禁令持續時間,當用戶嘗試登錄,你可以簡單地檢查多少時間禁令之後過去了,如果禁止時間過去了,更新行,並將禁止列設置爲'否'

1

存儲用戶被禁止的時間以及禁止的持續時間。當用戶嘗試訪問任何需要知道他或她是否被禁止的頁面時 - 顯示「您被禁止」的消息或不知道 - 在數據庫中查詢用戶信息。如果他被禁止,將禁令時間添加到禁止時間,並將其與當前時間進行比較。如果您通過了計算的時間,您可以解除禁令。