我在過去兩天發佈了幾個關於cookie的問題。我幾乎完成了我的家庭作業,但我有一個問題。希望最後一個關於PHP cookies
我需要讓我的用戶儘可能多地登錄我的網站的評論部分,但是,如果他們在30秒內失敗5次,他們會被鎖定3分鐘。要算出5次嘗試,我這樣做:
if(isset($_COOKIE['cookie1'])){
if(isset($_COOKIE['cookie2'])){
if(isset($_COOKIE['cookie3'])){
if(isset($_COOKIE['cookie4'])){
header('Location: reading_cat.php');
setcookie("locked_out", "cookie", time()+180);
}setcookie("cookie4", "cookie4", time()+30);
}setcookie("cookie3", "cookie3", time()+30);
}setcookie("cookie2", "cookie2", time()+30);
}setcookie("cookie1", "cookie1", time()+30);
這很好,除了一個問題。當用戶嘗試失敗時,會設置cookie。如果他未能嘗試2,則選中cookie 1,如果存在cookie 2,則打開。在這種情況下,每次添加一個連續的cookie時,出於某種原因,所有的cookie都會將其到期日寫入添加的最後一次cookie的時間。
要更改:cookie 1在6:00時被添加,沒有秒,並且過期時間爲6:00和30秒。 Cookie 2在6點和15秒添加,到期時間爲6點和45秒。我認爲餅乾應該保持不變,但是當我檢查時,現在餅乾餅乾和餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾餅乾因此,在這種情況下,所有的cookie在同一時間到期(這是不好的)。
我在做什麼錯?
真是一團糟!老兄,你應該考慮改變你使用的整個代碼。 –
設置一千個不同的餅乾也沒有意義。將**數量的嘗試**寫入*一個* cookie並簡單地檢查該值。這實際上不會是篡改證據,但更有意義。 – deceze
夠公平的,這是我第一次做這些東西。我瞭解製作一個名爲count的cookie,並檢查它已增加了多少次,但是如何檢查用戶在30秒內嘗試了5次?用戶可以在15秒內嘗試4次,然後等待30秒,然後再次嘗試5次。如果我完全是一個計數,就沒有辦法說出來。 –