我是將登陸的錯誤次數和時間存到session,當達到最大錯誤次數時將無法登錄,可是將cookie清空後仍可登入。請問該怎麼解決?或有其它的方式限制登入次數嗎?謝謝!
走同样的路,发现不同的人生
資料庫加個欄位,超過次數鎖定帳號...
用memcache 或 redis 做快取控制
$key = 登入帳號
$value = 登入失敗次數
$this->set($key,$value);
用ip和HTTP_USER_AGENT 來判斷是否同一使用者
像你這種情況,只能透過全域快取來處理了。如果你要控制某個使用者名稱的登入次數,那麼就1.針對keyvalue快取統一資料結構key=value => 使用者名稱={'登入次數':1},接下來無論用redis、memcache、mysql(建cache表,列[key value],索引hash key)直接$userinfo = $cacheobj->get('用戶名')取得用戶信息,判斷登入次數,自增登入次數後$cacheobj->set('使用者名稱', $userinfo)回寫
2.納入到資料庫登入資訊表結構給mysql使用者登入表新增登入次數列,然後就是呼叫sql,獲取,判斷,自增,更新就歐了
如果要含時間緯度,那麼
1.針對keyvalue快取資料結構更新為使用者名稱={'登入次數':1, '逾時時間':時間戳},判斷再加時間緯度的判斷,超時將登入次數置為0
2.針對非mysql的keyvalue快取(redis、memcache)直接$cacheobj->set('用戶名', '登入次數', 逾時時間)
3.納入到資料庫登入資訊表結構這樣子的話就再加一列超時時間
實現的方法無數種,主要看實際場景和資源。
資料庫加個欄位,超過次數鎖定帳號...
用memcache 或 redis 做快取控制
$key = 登入帳號
$value = 登入失敗次數
$this->set($key,$value);
用ip和HTTP_USER_AGENT 來判斷是否同一使用者
像你這種情況,只能透過全域快取來處理了。如果你要控制某個使用者名稱的登入次數,那麼就
1.針對keyvalue快取
統一資料結構key=value => 使用者名稱={'登入次數':1},接下來無論用redis、memcache、mysql(建cache表,列[key value],索引hash key)
直接$userinfo = $cacheobj->get('用戶名')取得用戶信息,判斷登入次數,自增登入次數後$cacheobj->set('使用者名稱', $userinfo)回寫
2.納入到資料庫登入資訊表結構
給mysql使用者登入表新增登入次數列,然後就是呼叫sql,獲取,判斷,自增,更新就歐了
如果要含時間緯度,那麼
1.針對keyvalue快取
資料結構更新為使用者名稱={'登入次數':1, '逾時時間':時間戳},判斷再加時間緯度的判斷,超時將登入次數置為0
2.針對非mysql的keyvalue快取(redis、memcache)
直接$cacheobj->set('用戶名', '登入次數', 逾時時間)
3.納入到資料庫登入資訊表結構
這樣子的話就再加一列超時時間
實現的方法無數種,主要看實際場景和資源。