天天看點

PHP-ldap通過window域賬戶認證

一,由于公司的centos系統中的php标準安裝沒有php-ldap相關插件,報錯資訊如下:

    Fatal error: Call to undefined function ldap_connect() in /home/www/corp/login.php on line 11

二,安裝php-ldap

      yum install php-ldap

      find / –name “*ldap.so” 

      #/usr/lib64/php/modules/ldap.so #查找子產品位置

      vim php.ini

      添加extension=#/usr/lib64/php/modules/ldap.so 

      /etc/init.d/php-fpmd restart #重新開機php-fpmd

三,login1.php

<?php 

$username  = '[email protected]'; 

$password   = '密碼'; 

$conn = ldap_connect('域控位址') 

              or die('warning'); 

if ($conn) 

        $bind = ldap_bind($conn,$username, $password); 

        if ($bind) 

        { 

                    echo "yes"; 

        } else { 

                    echo "no"; 

        } 

?>

四,login2.php

    $hostname="域控位址"; 

    $port = 389; 

    $username_linux = "cn=Manager,dc=example,dc=com";#openldap賬号 

    $username_windows = [email protected];#域控賬号 

    $password = "密碼"; 

    $basedn = "dc=yu,dc=com"; #基本DN 

    if( $port ) 

    { 

            $ds=ldap_connect($hostname,$port); 

    } 

    else 

            $ds=ldap_connect($hostname); 

    if( $ds ) 

            ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION,3); 

            ldap_set_option($ds, LDAP_OPT_REFERRALS,0); 

            $r=ldap_bind($ds,$username_windows,$password); #ldap_bind的傳回值是一個布爾類型,我們可以根據傳回值判斷使用者的登入證書是否有效 

            $sr=ldap_search($ds, $basedn,"(objectClass=*)"); 

            echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "<br />"; 

            $info = ldap_get_entries($ds, $sr);