tongect โพสต์ 2010-8-2 12:02:57

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

แก้ไขล่าสุดโดย tongect เมื่อ 2010-8-2 12:06

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

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

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

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

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

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


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

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


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

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

แค่นี้ก็เสร็จแล้วครับ
หน้า: [1]
ดูในรูปแบบกติ: วิธีแก้ปัญหาให้ login ซ้ำได้เกินห้าครั้ง กับแก้เวลาที่ต้องรอ