2012-01-17 125 views
0

我試圖連接到LDAP服務器以驗證用戶憑據。警告:ldap_bind():無法綁定到服務器:憑據無效PHP和LDAP

我發現一些用戶有這個相同的問題,但他們的解決方案並不適合我。

這裏是我使用的是什麼:

<?php 
define('LDAP_SERVER', 'LDAP://pdc.mydomain.com'); 
define('LDAP_PORT', 389); 
define('LDAP_TOP', 'dc=mydomain,dc=com'); 
if(isset($_POST['username'])) 
{ 
    if(!($ds = ldap_connect(LDAP_SERVER, LDAP_PORT))) 
    { 
     die ("Could not connect to mydomain domain"); 
    } 
    $un = $_POST['username'].",".LDAP_TOP; 
    //echo stripslashes($un)."<br>"; 
    $ldapbind = ldap_bind($ds, stripslashes($un), $_POST['password']); 
    if($ldapbind) 
     echo "login success"; 
    else 
     echo "login failed"; 
} 
?> 

我使用 「MYDOMAIN \名爲myUsername」,只是 「名爲myUsername」 嘗試。

我添加了stripslashes()函數時,既沒有工作來測試,並仍然沒有骰子。

錯誤時每次都遇到是:警告:的ldap_bind():無法綁定到服務器:無效的憑證

任何幫助,將不勝感激

TIA

+0

你可以告訴我們一個示例值,它將在'$ _POST ['username']'?另外,爲什麼'stripslashes'?您是否在啓用了魔術引號的服務器上運行?檢查LDAP服務器設置,可能需要TLS? – Charles 2012-01-17 20:06:51

+0

我得到這個排序。事實證明,我需要在用戶名@ mydomain.com。謝謝回覆。 – user1154725 2012-01-18 21:10:02

回答

0

檢查是否登錄用戶名和傳遞正確。 並在登錄前添加域名。見例子底部(HQ \登錄):

<?php 
$login = 'HQ\student'; 
$password = 'MYPASS'; 

$ldap_link = ldap_connect('pdc.bc) or die("Could not connect to LDAP server."); 

$ldapbind = @ldap_bind($ldap_link, $login, $password) or die ("Error trying to bind: ".ldap_error($ldap_link)); 
?> 
0

我知道這是一個很老的問題,如果你還需要一個答案,然後如果你運行在一個單一的PHP文件的代碼,會發生什麼?

$username = 'hello'; 
$password = '123123'; 
$server = '192.168.32.4'; 
$domain = '@yourdomain.local'; 
$port = 389; 

$connection = ldap_connect($server, $port); 
if (!$connection) { 
    exit('Connection failed'); 
} 

// Help talking to AD 
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3); 
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); 

$bind = @ldap_bind($connection, $username.$domain, $password); 
if (!$bind) { 
    exit('Binding failed'); 
} 

// This is where you can do your work 
echo 'Hello from LDAP'; 

ldap_close($ldap_connection); 

更多的信息是here