Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > สอบถามเรื่อง Login โดยการใช้ LDAP บาง Users ไม่สามารถ bind ได้



 

สอบถามเรื่อง Login โดยการใช้ LDAP บาง Users ไม่สามารถ bind ได้

 



Topic : 132771



โพสกระทู้ ( 26 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



สอบถามท่านสมาชิกหน่อยครับ
คือปกติผมก็ทำเว็บ PHP มาเยอะโดยการใช้ LDAP ในการ authen
แต่ก็ไม่เคยเจอปัญหานี้มาก่อน

ปัญหาคือ
บาง Users ไม่สามารถ authen ได้โดย failed ตั้งแต่ bind เลย ซึ่งผมก็ไม่เข้าใจ
ทั้งๆที่ก่อนหน้านี้ Users เหล่านี้สามารถเข้าได้ปกติ
แต่มาวันนึงเขาก็เข้าไม่ได้ ซึ่งผมพยายามเช็คแล้วแต่ก็ยังหาสาเหตุไม่เจอครับ ประมาณ 2-3 คนที่เข้าไม่ได้
ซึ่งใน ldap tree ใน group ที่กำหนดไว้มีประมาณ 20กว่าคน อย่าง account ผมก็เข้าได้ปกติครับ และคนอื่นๆอีกหลายคนก็เข้าได้ปกติ

ไม่ทราบว่าพอจะมีแนวทางหรือ keyword อะไรให้เสริจหาไหมครับ หรือการให้ ldap รีเทิร์นเออเร่ออะไรออกมาสักหน่อยเพราะตอนนี้
คือหน้า blank ครับ ทั้งๆที่ปิด error_reporting(0) ไปแล้วในหน้า ldap authen


ขอบคุณครับ



Tag : PHP, Ms SQL Server 2012, JavaScript, Google Chrome, XAMPP, Windows









ประวัติการแก้ไข
2018-12-16 15:42:42
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-12-16 15:41:14 By : nookseal View : 1076 Reply : 5
 

 

No. 1



โพสกระทู้ ( 3,844 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Twitter Facebook

ขอดู code หน่อยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-17 14:56:23 By : mongkon.k
 


 

No. 2



โพสกระทู้ ( 26 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

Code (PHP)
<?php
ob_start();
session_start();
//error_reporting(0);
?>

<?php

function ddd() {

    date_default_timezone_set("Asia/Bangkok");
    $currentdate = date('j/M/Y H:i:s');

    $user = $_REQUEST['username']; 
    $password = $_REQUEST['password'];

    $ldap_dn = "OU=xx, OU=xx, DC=xx, DC=xx, DC=local";
    $ldap_con = ldap_connect("xxxxxxxxxxxxxxxxxxxx");
    $ldap_user = $user.'@xxxxxxxxx';
    $ldap_password = $password;
    $ldap_bind = @ldap_bind($ldap_con, $ldap_user, $ldap_password);
    ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0 );

    if (!$ldap_bind){
        echo '<script language="javascript">';
        echo 'alert("Wrong username or password!! Please try again.")';
        echo '</script>';
        ldap_errno( $ldap_con );
        include("database_connect.php");
        $query = "INSERT INTO LoginLog (username, name, timelogin, status) VALUES (?, ?, ?, ?)";
        $params = array($user, 'unknow', $currentdate, 'failed, wrong password');
        if (sqlsrv_query($conn, $query, $params)) {  
           // echo "Statement executed.\n";  
            echo "<meta http-equiv='refresh' content='0;URL=pcipatching.php' />";
        } else {  
            echo "Error in statement execution.\n";  
            die(print_r(sqlsrv_errors(), true));  
            echo "<meta http-equiv='refresh' content='0;URL=pcipatching.php' />";
        }   
                //return $ldap;
        //echo "<meta http-equiv='refresh' content='0;URL=login_form.php?username=".$_REQUEST['username']."' />";
    //echo "invalid credential!!!";
        //die("<br><br>");
    }else if ($ldap_bind) {
        $filter = "(sAMAccountName=$user)";
        $result = ldap_search($ldap_con, $ldap_dn, $filter);
        $entries = ldap_get_entries($ldap_con, $result);

        for ($i=0; $i<$entries["count"]; $i++) {
            //echo "Authenticated<br>";
            //echo "<p>Welcome <strong> ". $entries[$i]["cn"][0] ."</strong><br /> Username: " . $entries[$i]["samaccountname"][0] ."<br>".$entries[$i]["memberof"][0]."</p>\n";
            $mail = $entries[$i]["mail"][0];
            $realname = $entries[$i]["cn"][0];

            foreach($entries[0]['memberof'] as $grps) {
              // is user
                if(strpos($grps, "group1") ) $access = 0;
                if(strpos($grps, "group2") ) $access = 1;
                if(strpos($grps, "group3") ) $access = 2;
                echo '<pre>';
                //var_dump($grps);
                echo '</pre>';
            }
        }

        if($access == 1) {
            echo "Access done<br>";
                // establish session variables
            $_SESSION['realname'] = $realname;
            $_SESSION['mail'] = $mail;
            $_SESSION['username'] = $user;
            $_SESSION['access'] = $access;
            echo $user."<br>";
            //echo $_SESSION['mail']; 
            //echo $_SESSION['access'];
            echo $realname."<br>";
            echo $currentdate."<br>";
            include("database_connect.php");
            $query = "INSERT INTO LoginLog (username, name, timelogin, status) VALUES (?, ?, ?, ?)";
            $params = array($user, $realname, $currentdate, 'success');

            if (sqlsrv_query($conn, $query, $params)) {  
                echo "Statement executed.\n";  
               // echo "<meta http-equiv='refresh' content='0;URL=pcipatching.php' />";
            } else {  
                echo "Error in statement execution.\n";  
                die(print_r(sqlsrv_errors(), true));  
            }   
            header("location: homepage.php");
                //return $ldap;
        }
        if($access == 2) {
            echo "Access done<br>";
                // establish session variables
            $_SESSION['realname'] = $realname;
            $_SESSION['mail'] = $mail;
            $_SESSION['username'] = $user;
            $_SESSION['access'] = $access;
            echo $user."<br>";
            //echo $_SESSION['mail']; 
            echo $_SESSION['access'];
            echo $realname."<br>";
            echo $currentdate."<br>";
            include("database_connect.php");
            $query = "INSERT INTO LoginLog (username, name, timelogin, status) VALUES (?, ?, ?, ?)";
            $params = array($user, $realname, $currentdate, 'success');

            if (sqlsrv_query($conn, $query, $params)) {  
                echo "Statement executed.\n";  
               // echo "<meta http-equiv='refresh' content='0;URL=pcipatching.php' />";
            } else {  
                echo "Error in statement execution.\n";  
                die(print_r(sqlsrv_errors(), true));  
            }   
            header("location: homepage.php");
                //return $ldap;
        } 
        if ($access <= 0) {
            echo '<script language="javascript">';
            echo 'alert("You have no permission to access this website!")';
            echo '</script>';
            include("database_connect.php");
            $query = "INSERT INTO LoginLog (username, name, timelogin, status) VALUES (?, ?, ?, ?)";
            $params = array($user, 'unknow', $currentdate, 'failed, no permission');

            if (sqlsrv_query($conn, $query, $params)) {  
                echo "Statement executed.\n";  
               // echo "<meta http-equiv='refresh' content='0;URL=pcipatching.php' />";
            } else {  
                echo "Error in statement execution.\n";  
                die(print_r(sqlsrv_errors(), true));  
            }   
                //return $ldap;
            echo "<meta http-equiv='refresh' content='0;URL=login_form.php?username=".$_REQUEST['username']."' />";

            //return false;
        }
    //ldap_close($ldap_con);

    }
}




ddd();


?>






ปีกกาอาจจะผิดไปบ้างนะครับในนี้ไม่ต้องสนใจ แต่ในโค้ดจริงถูกแน่ครับ

login แล้วเด้งเข้าตั้งแต่บรรทัด 25เลยครับ bind ไม่เจอ
ทั้งๆที่แต่ก่อนก็เข้าได้ปกติครับ
ส่วน account ที่เข้าได้ปกติถึงตอนนี้ก็มีครับ ปกติทุกอย่างเข้าเว็บได้
ที่เข้าไม่ได้ตอนนี้แค่2-3คน


ประวัติการแก้ไข
2018-12-17 17:44:45
2018-12-17 17:45:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-17 17:43:21 By : nookseal
 

 

No. 3



โพสกระทู้ ( 26 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

รบกวนด้วยครับผม ยังแก้ไม่ได้เลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-24 09:33:42 By : nookseal
 


 

No. 4



โพสกระทู้ ( 430 )
บทความ ( 1 )



สถานะออฟไลน์
Blogger

หลักการ include file import file etc... ต่าง ควรไว้บนสุด ครั้งเดี่ยวจบครับ ไม่ต้องเอามาเยอะ
Code เขียนเกือบถูกหมด แต่ผิด Process
ทำไม ทุกๆครั้ง เวลาเข้าระบบ ต้องบันทืกการเข้าระบบทุกครั้ง?

ขอเดาว่า ทุกๆครั้ง ที่ Run หน้านี้ มันจะทำงาน 25-28 บรรทัด แบบนี้
เพราะ if(!...) {
..... นี้ไง มันเข้าเงื่อนไขนี้ ทุกครั้ง มันก็แสดง java script alert มาทุกครั้ง
}
ไปหาวิธีที่ดีกว่านี้ก็ได้
Code ถูกหมด แต่ว่าง Process ผิดๆ ส่วน Code ที่ Function ถูกก็ไม่ทำงานนะครับ

แนะนำเฉยๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-24 14:13:23 By : Hararock
 


 

No. 5



โพสกระทู้ ( 26 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ขอบคุณครับ

ึืคือที่สงสัยก็เพราะว่า users ส่วนใหญ่นั้นเข้ากันได้ครับจนถึงตอนนี้ก็เข้าได้ปกติรวมถึง account ผมด้วย
มีเพียง2-3 คนที่เข้าไม่ได้ แล้วไม่ใช่ว่าเข้าไม่ได้ตั้งแต่แรกนะครับ เคยเข้าได้แล้วจู่ๆก็มาเข้าไม่ได้
จากที่ลอง debug เบื้องต้นก็คือติดที่ bind ไม่เจอและเด้งเข้า if (!bind) บรรทัดที่ 25 ครับ

คือถ้าเข้าไม่ได้ทุกคนเนี่ย จะไม่สงสัยเลยครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-24 16:11:21 By : nookseal
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่อง Login โดยการใช้ LDAP บาง Users ไม่สามารถ bind ได้
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่