在經(jīng)過(guò)認(rèn)證后,我們就可以使用ldap_search()函數(shù)來(lái)執(zhí)行查詢,產(chǎn)生的$search_id是我們搜索的連接識(shí)別符。
然后,我們使用ldap_get_entries()函數(shù)將結(jié)果集賦給$result_array變量。這樣我們能夠以邏輯的方式排列信息,以便顯示。
格式化輸出:
在執(zhí)行完LDAP搜索后,返回的數(shù)據(jù)是以查找的順序排列的。不過(guò)我們?cè)谂判驎r(shí)沒(méi)有SQL這樣方便,使用ORDER BY語(yǔ)句就可以了。通常多數(shù)公共的LDAP目錄都沒(méi)有標(biāo)準(zhǔn)的大小規(guī)范。排序是基于字符的ASCII值,我們必須將字符全部格式化為小寫(xiě),以便按字母的順序輸出。
LDAP結(jié)果集是一個(gè)多維的數(shù)組,腳本中的$result_array的結(jié)構(gòu)如下:
$result_array[0]["cn"] [0] = "Dannie Stanley"
["dn"] [0] = "uid=dannie,dc=spinweb.net"
["givenname"][0] = "Dannie"
["sn"] [0] = "Stanley"
["mail"] [0] = "danSPAM@spinweb.net"
$result_array[1]["cn"] [0] = "Michael Reynolds"
["dn"] [0] = "uid=michael,dc=spinweb.net"
["givenname"][0] = "Michael"
["sn"] [0] = "Reynolds"
["mail"] [0] = "michaelSPAM@spinweb.net"
數(shù)據(jù)以這種格式存放的原因是每個(gè)屬性都可能有超過(guò)一個(gè)值(象樹(shù)的結(jié)構(gòu))。例如,如果我的名
字是‘Dannie’,我還可以在LDAP中增加一些屬性,例如:
$result_array[0]["cn"] [0] = "Dannie Stanley"
["dn"] [0] = "uid=dannie,dc=spinweb.net"
["givenname"][0] = "Dannie"
["givenname"][0] = "Dan"
["sn"] [0] = "Stanley"
["mail"] [0] = "danSPAM@spinweb.net"
在我們的搜索中,我們只關(guān)心每個(gè)屬性的首個(gè)值,因此除了dn只有一個(gè)值外,其它我們只使用每
個(gè)屬性中序號(hào)為0的值。以下就是屬性和它們含義的簡(jiǎn)單列表:
"cn" = Common Name
"dn" = Distinguished Name
"givenname" = First Name
"sn" = Last Name
"mail" = Email地址
<?php
//如果搜索成功,將結(jié)果排序
if($result_array)
{
for($i=0; $i {
$format_array[$i][0] = strtolower($result_array[$i]["cn"][0]);
$format_array[$i][1] = $result_array[$i]["dn"];
$format_array[$i][2] = strtolower($result_array[$i]["givenname"][0]);
$format_array[$i][3] = strtolower($result_array[$i]["sn"][0]);
$format_array[$i][4] = strtolower($result_array[$i]["mail"][0]);
}
//排序數(shù)組
sort($format_array, "SORT_STRING");
for($i=0; $i {
$cn = $format_array[$i][0];
$dn = $format_array[$i][1];
$fname = ucwords($format_array[$i][2]);
$lname = ucwords($format_array[$i][3]);
$email = $format_array[$i][4];
if($dn && $fname && $lname && $email)
{
$result_list .= "$fname $lname";
$result_list .= " <$email〉
本新聞共
5頁(yè),當(dāng)前在第
2頁(yè)
1 2 3 4 5