久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

返回列表 發帖
查看: 8095|回復: 2

[Discuz!]登錄次數限制解決思路

8

主題

123

回帖

296

積分

應用開發者

貢獻
0 點
金幣
143 個
樓主
發表于 2019-6-13 10:08:26 | 只看樓主 |倒序瀏覽 |閱讀模式
緣由:因為想取消密碼錯誤后,15分鐘的限制。在網上找到了以下的修改方法,但是修改后沒有任何作用,查看了了DZ的整個流程,找到了合適的修改方法。
方法一(限制ip錄入):
  • 最開始搜索網絡教程需要修改 source/function/function_member.php 中有關 900(15分鐘) 和 5(次數)即可,結果發現不行
  • 全局找提示文字,發現跟次數提示的變量 loginperm, 全局搜索,source/class/class_member.php 中出現比較多,但還是找不到修改次數和時間的地方
  • 折騰發現在代碼里修改次數和時間的方法全部失效,考慮是不是寫入本地緩存了,沒有在代碼里直接寫,驗證推測失敗
  • 思考是不是寫到數據庫里,檢測數據庫表,發現 pre_ucenter_failedlogins 在登錄失敗的時候,會記錄次數,并且含有count和ip的變量,推測正確。
  • 登錄限制的流程應該是,用戶登錄失敗,程序將該操作寫入數據庫,再次登錄時,從數據庫中讀取該用戶ip和已登錄次數,進行比較,超過最大值(5),則進行相應操作。
沒找到最大次數限制在哪里設定的,為解決問題,考慮直接禁止程序寫入數據庫。全局搜索 “count+1” ,最后定為到 uc_client/model/user.php 中數據庫操作語句,直接禁用,可以解決問題。
// $this->db->query(“UPDATE “.UC_DBTABLEPRE.”failedlogins SET count=count+1, lastupdate='”.$this->base->time.”‘ WHERE ip='”.$ip.”‘ OR ip=’$username'”);
最后找到了全局配置的文件:uc_client/data/cache/settings.php
方法二(修改登錄次數和時間間隔):
  • 嘗試在dz文件 source/function/functionmember.php 中有關 900(15分鐘) 和 5(次數),前臺沒有任何效果。
  • 猜測是在ucenter主要控制
  • 測試后,發現在ucclient/data/cache/settings.php 文件中第28行變量“loginfailedtime”是控制登陸次數,修改為50”。在ucclient/model/user.php 中第236行變量“$expire”是控制時間間隔,修改為1s。
  • 在source/laguage/lang_member.php修改提醒文字。






轉自:技術學習小組http://blog.qiji.tech/archives/1572
回復

使用道具 舉報

1

主題

192

回帖

226

積分

爐火純青

貢獻
0 點
金幣
32 個
沙發
發表于 2019-6-16 14:43:19 | 只看Ta
感謝 學習一下
回復

使用道具 舉報

BQQ

20

主題

98

回帖

133

積分

漸入佳境

貢獻
0 點
金幣
10 個
板凳
發表于 2022-9-27 17:36:30 | 只看Ta
我記得數據庫中清空一個表的數據就可以了
回復 1

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-9-19 10:24 , Processed in 0.057400 second(s), 27 queries .

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表