搜尋

首頁  >  問答  >  主體

php - pc端 限制使用者登陸次數!

我是將登陸的錯誤次數和時間存到session,當達到最大錯誤次數時將無法登錄,可是將cookie清空後仍可登入。請問該怎麼解決?或有其它的方式限制登入次數嗎?謝謝!

怪我咯怪我咯2736 天前860

全部回覆(4)我來回復

  • 我想大声告诉你

    我想大声告诉你2017-05-31 10:35:27

    資料庫加個欄位,超過次數鎖定帳號...

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-31 10:35:27

    用memcache 或 redis 做快取控制

    $key = 登入帳號

    $value = 登入失敗次數

    $this->set($key,$value);

    回覆
    0
  • 高洛峰

    高洛峰2017-05-31 10:35:27

    用ip和HTTP_USER_AGENT 來判斷是否同一使用者

    回覆
    0
  • 高洛峰

    高洛峰2017-05-31 10:35:27

    像你這種情況,只能透過全域快取來處理了。如果你要控制某個使用者名稱的登入次數,那麼就
    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.納入到資料庫登入資訊表結構
    這樣子的話就再加一列超時時間

    實現的方法無數種,主要看實際場景和資源。

    回覆
    0
  • 取消回覆