天天看點

php 連接配接 ldap 執行個體,使用PHP連接配接LDAP伺服器(二)

建立LDAP查詢

前面已經提到,LDAP查詢與SQL查詢是不一樣的。是以,語句要受到一定的限制,以下是一個基本的例子。

//Create Query $ldap_query = "cn=$common";

在我們的例子中,“cn”是我們要進行搜尋的屬性,而$common是由搜尋的form中得到的字元串變量。LDAP的查詢語句語句可使用通配符‘*’。例如‘$stanley’将可以找出‘dan stanley’。

連接配接到LDAP伺服器

以下的函數連接配接到一個LDAP資源,并且将連接配接的識别号賦給一個變量,就好象連接配接到一個通常的資料庫一樣,例如MySQL。

<?php

//連接配接到LDAP

$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]);

?>

在我們的例子中,“$connect_id”是連接配接的識别号,$LDAP_SERVER是可能的ldap伺服器數組,而$SERVER_ID是由搜尋表格得到的LDAP伺服器變量。

如果連接配接成功,處理查詢

如果連接配接成功的話,我們将得到一個有效的LDAP連接配接識别号,這樣我們就可以處理查詢。

<?php

if($connect_id)

{

//認證

$bind_id = ldap_bind($connect_id);

//執行搜尋

$search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query);

//将結果集合配置設定給一個數組

$result_array = ldap_get_entries($connect_id, $search_id);

}

else

{

//顯示連接配接錯誤

echo "Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]";

}

?>

一旦我們與LDAP伺服器建立好連接配接,我們就必須進行認證。PHP在連接配接大多數的資料庫時,都是通過發送使用者名和密碼來進行的。不過,在LDAP中,認證是未知的,直到進行一個bind操作。在我們的例子中,“$bind_id”是綁定連接配接的辨別符。我們是通過匿名綁定到公共的LDAP伺服器的。是以,在執行ldap_bind()時,隻使用連接配接識别号就可以了,無需其它的參數。

在經過認證後(這裡是匿名的),我們就可以使用ldap_search()函數來執行查詢,産生的$search_id是我們搜尋的連接配接識别符。

然後,我們使用ldap_get_entries()函數将結果集賦給$result_array變量。這樣我們能夠以邏輯的方式排列資訊,以便顯示。