2013-08-19 51 views
0

我目前正在寫包含1每一個登錄嘗試失敗時增加了計數器會話變量簡單的登錄腳本練我的編碼登錄失敗。一旦有3次登錄失敗,登錄頁面將自動引導用戶進入一個「錯誤」頁面,計時器計時到他可以再次嘗試登錄時爲止。一旦計時器達到0,計數器會話變量將被清除(復位爲0),用戶可以嘗試再次登錄。制約了倒計時

我寫了會話變量的登錄頁面,但我目前卡在錯誤頁面,因爲我不知道如何去寫關於timer.Im使用PHP(與TIMESTAMP)或Javascript/JQuery的。

問:

1.什麼是優勢/ PHP和/或Javascript/JQuery的缺點

2.Im目前不跟蹤登錄嘗試在我的數據庫,我應該可以這樣做?

謝謝! P.S:我目前使用統一服務器,MYSQL

+1

你是如何減少'$ _SESSION [「數」]'沒有關係?在我看來,它最好能夠像'如果上次嘗試登錄> 10分鐘前,$ _SESSION [「數」] = 0'然後'如果$ _SESSION [「數」]> = 3到錯誤page' –

+2

使用PHP定時器。我可以很容易地在瀏覽器中關閉JavaScript,如果它是用js/jquery編寫的話,那可能會讓你的計時器癱瘓。它不會傷害它們存儲在數據庫中要麼 –

+0

我想'在session_start();'應該有始終,爲什麼你檢查,如果($ _ SESSION!) – 2013-08-19 13:25:00

回答

0

在你php你可以做類似如下(僞)

# clear old counters 
if last_login_attempt_time > 5_mins_ago 
    $_SESSION['count'] = 0 
# redirect if counter high 
if $_SESSION['count'] >= 3 
    send_client_to(error_page) 
    die() # ensure code proceeds no further 
# getting here means that attempting a log in is okay for this session 
# attempt login 
if login_unsuccessful 
    $_SESSION['count'] += 1 
    reload_this_page() 
else 
    continue_as_normal() 

在你error_page(仍然php),如果你想顯示他們需要等待多久

remain = 5_minutes + last_login_attempt_time - time_now 
if remain > 0 
    # tell client to wait for remain time 
else 
    # tell client they don't have to wait 

如果你想倒計時動畫,你可以的remain值傳遞給一些的JavaScripterror_page並讓它做一次視力倒計時JavaScript。這僅僅是視覺效果,並且對當用戶實際上可以登錄。

0
  1. 對於時鐘我會使用JavaScript,但與PHP後端。 PHP將用於存儲實際時間,並且可以使用JavaScript在沒有頁面刷新的情況下對定時器進行倒計時,然後在碰到零時重定向。

爲此,您需要的時候添加到數據庫中。無論如何添加它們並沒有什麼壞處,並且可以幫助調試或稍後幫助歷史記錄。

+0

要添加到答案中:包含登錄錯誤鎖的表*還可以包含用戶的IP地址。 –