Discuz Thai

 ลืมรหัสผ่าน
 สมัครสมาชิก

ข้อตกลงการใช้งานกระดานข่าวดิสคัสไทย DiscuzThai Agreement (English Version) ประกาศดิสคัสไทย - ทำเนียบดิสคัสภาษาไทย

Discuz! X3.5 Thai R20240520 Rev.9 (NEW) [วิดีโอช่วยสอน] อัปเกรด Discuz! X3.4 เป็น X3.5 Discord ของ Discuz! Thai Community อย่างเป็นทางการ

Discuz! X3.4 Thai R20220811 (REV.75) สิ้นสุดการสนับสนุน Discuz! X3.4 ภาษาไทยตั้งแต่วันนี้เป็นต้นไป (ขอแนะนำให้อัปเกรดเป็น X3.5 แทน)

ค้นหา
แท็กยอดนิยม: ดิสคัสภาษาไทย Discuz Thai
ดู: 2323|ตอบกลับ: 0

วิธีแก้ปัญหาให้ login ซ้ำได้เกินห้าครั้ง กับแก้เวลาที่ต้องรอ

[คัดลอกลิงก์]
tongect โพสต์ 2010-8-2 12:02:57 |โหมดอ่าน
แก้ไขล่าสุดโดย tongect เมื่อ 2010-8-2 12:06

ผมลองแก้ใน เวอร์ชั่น 7.2 นะครับ

ตอนแแรก เปิดไฟล์ โฟลเดอร์ include ชื่อไฟล์ misc.func.php
ดูใน function logincheck นี้ครับ
  1. function logincheck() {

  2.         global $db, $tablepre, $onlineip, $timestamp;

  3.         $return = 0;
  4.         $login = $db->fetch_first("SELECT count, lastupdate FROM {$tablepre}failedlogins WHERE ip='$onlineip'");
  5.         $return = (!$login || ($timestamp - $login['lastupdate'] > 900)) ? 4 : max(0, 5 - $login['count']);

  6.         if($return == 4) {
  7.                 $db->query("REPLACE INTO {$tablepre}failedlogins (ip, count, lastupdate) VALUES ('$onlineip', '1', '$timestamp')");
  8.                 $db->query("DELETE FROM {$tablepre}failedlogins WHERE lastupdate<$timestamp-901", 'UNBUFFERED');
  9.         }
  10.         return $return;
  11. }
คัดลอกไปที่คลิปบอร์ด
900 คือเวลาที่เมื่อ login ซ้ำ เกิน 5 ครั้ง แล้้วเราต้องรอ 15นาที ( 900วินาที)
ส่วนจำนวนครั้ง  ก็ คือ 5   ซึ่งถ้าจะแก้ เป็น 10 ครั้ง ต้องแก้ 2 บรรทัดนี้ครับ
  1. $return = (!$login || ($timestamp - $login['lastupdate'] > 900)) ? 4 : max(0, 5 - $login['count']);

  2.         if($return == 4) {
คัดลอกไปที่คลิปบอร์ด
5 คือจำนวนครั้งที่ให้ login ซ้ำ
4 คือค่าที่จะต้องแก้ โดยแก้ให้น้อยกว่าค่า จำนวนครั้งที่ให้ login ซ้ำ อยู่ 1   ก็คือ (5 - 1  = 4)


ถ้าจะแก้ เป็น 10 ครั้ง ก็ให้แก้เป็นแบบนี้ครับ
  1.         $return = (!$login || ($timestamp - $login['lastupdate'] > 900)) ? 9 : max(0, 10 - $login['count']);

  2.         if($return == 9) {
คัดลอกไปที่คลิปบอร์ด
ส่วนการแก้ไขเวลาที่รอ จาก code ข้างบนสุดจะเห็นว่า มีเลขที่ เป็น 900 กับ 901  ให้แก้ไขตรงนั้นครับ จะปรับลด หรือเพิ่ม ก็ได้ตามสะดวกครับ


จากนั้น ให้ แก้ไขที่ไฟล์ logging.php ที่อยู่ใน folder หลัก นะครับ
  1. if($seccodecheck && $seccodedata['loginfailedcount']) {
  2.                 $seccodecheck = $db->result_first("SELECT count(*) FROM {$tablepre}failedlogins WHERE ip='$onlineip' AND count>='$seccodedata[loginfailedcount]' AND $timestamp-lastupdate<=900");
  3.                 $seccodescript = '<script type="text/javascript" reload="1">if($(\'seccodelayer\').innerHTML == \'\') ajaxget(\'logging.php?action=seccode\', \'seccodelayer\');</script>';
  4.         }
คัดลอกไปที่คลิปบอร์ด
จะเห็นว่ามีเลข 900 อยู่ให้แก้ไข ตรงนี้ด้วยนะครับ
แค่นี้ก็เป็นอันใช้ได้แล้วครับ

่ส่วนเรื่องแก้ไขภาษา ก็จะอยู่ในไฟล์ ที่อยู่ในโฟลเดอร์ templates/default/ messages.lang.php ครับ
บรรทัดที่ชื่อ 'login_strike' => 'เข้าระบบผิดพลาดเกินกำหนด กรุณารอหลังจาก 15 นาที แล้วลองอีกครั้ง',  ให้แก้ตรงนี้ครับ

แค่นี้ก็เสร็จแล้วครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | สมัครสมาชิก

รายละเอียดเครดิต

รายชื่อผู้กระทำผิด|Archiver|ดิสคัส ไทย Follow us: Become a fan on facebook. Follow us on Twitter.

GMT+7, 2025-5-13 01:26

Powered by Discuz! X3.4, Rev.66

Copyright © 2001-2021 Tencent Cloud. Licensed

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้