2014-05-18 76 views
0

我對使用PHP的LDAP實現有個疑問。我剛剛開始閱讀LDAP,並且仍然無法理解它是如何工作的。我正在開發一個新的應用程序,只有在Active Directory中找到它們時纔會授予用戶訪問權限。我在下面發佈的代碼確定用戶輸入的用戶名和密碼是否在Active Directory中。此代碼有效,但是現在我想根據輸入的憑據來提取用戶的名字。我想提取這些信息的原因是,當用戶登錄時,他們被重定向到另一個頁面(即dashboard.php),它將顯示內容和短語「歡迎」用戶的名字「。我只是不知道我怎麼會去約拉此信息,如果任何人都可以對我應該如何去這樣做,將不勝感激提供反饋使用LDAP和PHP查詢Active Directory信息

連接到LDAP服務器:。

<?php 
$ldaphost = "name of host"; //LDAP Host 
$ldapport = 389; //LDAP Port Number     

$ldapconn = ldap_connect($ldaphost, $ldapport); //Connect to LDAP Host on LDAP Port Number 

// Check LDAP connection 
if(!$ldapconn) { 
    die("Unsuccessful connection to " . $ldaphost . " on port " . $ldapport . "<br />");  
} 
?> 

驗證用戶是否在Active Directory中:

<?php 
include 'ldap_connect.php'; 

$username = $_POST['username']; 
$password = $_POST['password']; 

$ldapbind = ldap_bind($ldapconn, $username, $password); 

if ($ldapbind) { 
    header("Location: ../dashboard.php"); 
} else { 
    print "Access Denied!"; 
} 
?> 

回答

0

您將必須爲用戶執行ldap_search以獲取用戶的屬性。

事情是這樣的:

$ldapresults = ldap_search($ldapconn, $baseDn, 'samAccountName=' . $username, array('sn'), 0, 0, 10); 
if (! $ldapresults) { 
    die('No results found'); 
} 
$results = ldap_get_entries($ldapconn, $ldapresults); 
var_dump($results); 

之後,應看到$結果的內容。

也許你將不得不玩$baseDn,過濾器(samAccountName=$username)和檢索的屬性(array('sn'))獲得你正在尋找的值的權利。

我創建了一個能夠一次性完成ldap認證和用戶信息檢索的要點。看看https://gist.github.com/heiglandreas/5689592

+0

非常感謝您提供這些信息。我將不得不嘗試一下,我真的很感激這個建議。 – Brandon

相關問題