在經(jīng)過認(rèn)證后,我們就可以使用ldap_search()函數(shù)來執(zhí)行查詢,產(chǎn)生的$search_id是我們搜索的連接識別符。
然后,我們使用ldap_get_entries()函數(shù)將結(jié)果集賦給$result_array變量。這樣我們能夠以邏輯的方式排列信息,以便顯示。
格式化輸出:
在執(zhí)行完LDAP搜索后,返回的數(shù)據(jù)是以查找的順序排列的。不過我們在排序時沒有SQL這樣方便,使用ORDER BY語句就可以了。通常多數(shù)公共的LDAP目錄都沒有標(biāo)準(zhǔn)的大小規(guī)范。排序是基于字符的ASCII值,我們必須將字符全部格式化為小寫,以便按字母的順序輸出。
LDAP結(jié)果集是一個多維的數(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ù)以這種格式存放的原因是每個屬性都可能有超過一個值(象樹的結(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)心每個屬性的首個值,因此除了dn只有一個值外,其它我們只使用每
個屬性中序號為0的值。以下就是屬性和它們含義的簡單列表:
"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頁,當(dāng)前在第
2頁
1 2 3 4 5