国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 網(wǎng)管 > 服務器 > 正文

使用PHP連接LDAP服務器

2020-04-18 13:10:35
字體:
供稿:網(wǎng)友

LDAP是一個用來發(fā)布目錄信息到許多不同資源的協(xié)議。通常它都作為一個集中的地址本使用。LDAP最基本的形式是一個連接數(shù)據(jù)庫的標準方式。該數(shù)據(jù)庫為讀查詢作了優(yōu)化。因此它可以很快地得到查詢結(jié)果,不過在其它方面,例如更新,就慢得多。要特別注意的是,LDAP通常作為一個hierarchal數(shù)據(jù)庫使用,而不是一個關(guān)系數(shù)據(jù)庫。因此,它的結(jié)構(gòu)用樹來表示比用表格好。正因為這樣,就不能用SQL語句了。

  簡單說來,LDAP是一個得到關(guān)于人或者資源的集中、靜態(tài)數(shù)據(jù)的快速方式。

  我們來做這樣幾件事:

  設置公共LDAP服務器的信息;創(chuàng)建一個LDAP查詢;連接到LDAP服務器;如果連接成功,處理查詢;格式化輸出;關(guān)閉連接;設計搜索界面的HTML表格并顯示結(jié)果。

  設置公共LDAP服務器的信息:

  我們要做的第一件事情是定義所有欲搜索的LDAP服務器的信息:
"LDAP_NAME" = 新的LDAP項目的名字
"LDAP_SERVER" = 新的LDAP項目的IP地址或者主機名
"LDAP_ROOT_DN" = 新的LDAP項目的根的辨識名

<?php 

$LDAP_NAME[0] = "Netscape Net Center"; 
$LDAP_SERVER[0] = "memberdir.netscape.com"; 
$LDAP_ROOT_DN[0] = "ou=member_directory,o=netcenter.com"; 

$LDAP_NAME[1] = "Bigfoot"; 
$LDAP_SERVER[1] = "ldap.bigfoot.com"; 
$LDAP_ROOT_DN[1] = ""; 


//如果沒有選擇服務器的話將它設置為0 
if(!$SERVER_ID) 
$SERVER_ID=0; 

?> 
建立LDAP查詢:

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

//Create Query $ldap_query = "cn=$common"; 
  在我們的例子中,“cn”是我們要進行搜索的屬性,而$common是由搜索的form中得到的字符串變量。LDAP的查詢語句語句可使用通配符‘*’。例如‘$stanley’將可以找出‘dan stanley’。
連接到LDAP服務器:

  以下的函數(shù)連接到一個LDAP資源,并且將連接的識別號賦給一個變量,就好象連接到一個通常的數(shù)據(jù)庫一樣,例如MySQL。

<?php 

//連接到LDAP 
$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]); 

?> 

  在我們的例子中,“$connect_id”是連接的識別號,$LDAP_SERVER是可能的ldap服務器數(shù)
組,而$SERVER_ID是由搜索表格得到的LDAP服務器變量。

  如果連接成功,處理查詢:
  如果連接成功的話,我們將得到一個有效的LDAP連接識別號,這樣我們就可以處理查詢。

<?php 

if($connect_id) 

//認證
$bind_id = ldap_bind($connect_id); 

//執(zhí)行搜索 
$search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query); 

//將結(jié)果集合分配給一個數(shù)組 
$result_array = ldap_get_entries($connect_id, $search_id); 

else 

//顯示連接錯誤 
echo "Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]"; 

?> 
  一旦我們與LDAP服務器建立好連接,我們就必須進行認證。PHP在連接大多數(shù)的數(shù)據(jù)庫時,都是通過發(fā)送用戶名和密碼來進行的。不過,在LDAP中,認證是未知的,直到進行一個bind操作。在我們的例子中,“$bind_id”是綁定連接的標識符。我們是通過匿名綁定到公共的LDAP服務器的。因此,在執(zhí)行l(wèi)dap_bind()時,只使用連接識別號就可以了,無需其它的參數(shù)。

  在經(jīng)過認證后,我們就可以使用ldap_search()函數(shù)來執(zhí)行查詢,產(chǎn)生的$search_id是我們搜索的連接識別符。然后,我們使用ldap_get_entries()函數(shù)將結(jié)果集賦給$result_array變量。這樣我們能夠以邏輯的方式排列信息,以便顯示。 格式化輸出:

  在執(zhí)行完LDAP搜索后,返回的數(shù)據(jù)是以查找的順序排列的。不過我們在排序時沒有SQL這樣方便,使用ORDER BY語句就可以了。通常多數(shù)公共的LDAP目錄都沒有標準的大小規(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〉
/n"; 

elseif($dn && $cn && $email) 

$result_list .= "<A href='/"ldap://$LDAP_SERVER[$SERVER_ID]/$dn/"'>$cn</A>"; 
$result_list .= " <A href='/"mailto:$email/"'>$email</A>
/n"; 
= 
= 
= 
else 

echo "Result set empty for query: $ldap_query"; 

?> 
  $format_array是我們建立的新數(shù)組,里面包括有查詢的結(jié)果,并且被格式化用作輸出。首先循環(huán)$result_array中的每個元素,并且將它分配給一個兩維的數(shù)組用作排序。同時我們使用strtolower()函數(shù)將所有的值變?yōu)樾憽?/P>

我們使用PHP自帶的一個稱為sort()的函數(shù)進行排序。首個參數(shù)是要排序的數(shù)組,另一個是要執(zhí)行的排序類型,該類型是由PHP的文檔定義的。由于我們根據(jù)字符串排序,我們使用“SORT_STRING”。

我們循環(huán)已經(jīng)格式化好的數(shù)組,并且將它分配給一個名字為$result_list的輸出字符,該字符包含了HTML描述。要特別注意的是,在超鏈接中,我使用的是ldap的URL格式。這個格式的例子類似:HREF="ldap://ldap.domain.net/uid=dannie,dc=domain.net"。 

關(guān)閉連接:

現(xiàn)在我們所有的數(shù)據(jù)已經(jīng)包含在$result_list中了,我們可以安全地關(guān)閉LDAP的連接。
<?php 

//關(guān)閉連接
ldap_close($connect_id); 

?〉

定制搜索界面的HTML表格:
最后,我們要定制搜索用的HTML表格,它是用來給用戶執(zhí)行搜索的。

<?php 
//定制表格
echo " <CENTER><FORM action='/"$PHP_SELF/"' method='/"GET/"'>"; 
echo "Search in:<SELECT name='/"SERVER_ID/"'>"; //循環(huán)以建立SELECT選項 for($i=0; $i<COUNT($LDAP_NAME);
 <br $i++=> echo "<OPTION selected value='/"$i/"'>".$LDAP_NAME[$i]."</OPTION>"; echo "</SELECT>
"; 
echo "Search for:<INPUT name='/"common/"' type='/"text/"'>"; 
echo "<INPUT name='/"lookup/"' type='/"submit/"' value='/"go/"'>
"; 
echo "(You can use * for wildcard searches, ex. * Stanley will find all Stanleys)
"; 
echo "</FORM></CENTER>"; 

?> 

  代碼中的$PHP_SELF是一個全局的常量,代表的是腳本頁面自身,其中的循環(huán)是用來通過我們的$LDAP_NAME變量創(chuàng)建
SELECT選項。

顯示結(jié)果:

現(xiàn)在所有的工作已經(jīng)完成了,我們將打印出結(jié)果集。如果沒有符合的結(jié)果,將會顯示"No Results"的信息。

<?php 

//顯示結(jié)果
if($result_list) 

echo " <CENTER><TABLE border='/"1/"' cellPadding='/"10/"' cellSpacing='/"0/"' 
BGCOLOR=/"#FFFFEA/" WIDTH=/"450/"> <TBODY><TR><TD>$result_list</TD></TR>
</TBODY></TABLE></CENTER>"; 

else 
echo "No Results"; 


?> 

源代碼

  以下是完整的源代碼,只要將它剪切并粘貼到一個HTML文檔,就可以嘗試一下了。

<?php 

$LDAP_NAME[0] = "Netscape Net Center"; 
$LDAP_SERVER[0] = "memberdir.netscape.com"; 
$LDAP_ROOT_DN[0] = "ou=member_directory,o=netcenter.com"; 

$LDAP_NAME[1] = "Bigfoot"; 
$LDAP_SERVER[1] = "ldap.bigfoot.com"; 
$LDAP_ROOT_DN[1] = ""; 

//如果沒有選擇服務器的話將它設置為0 
if(!$SERVER_ID) 
$SERVER_ID=0; 

//建立查詢
$ldap_query = "cn=$common"; 

//連接到LDAP 
$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]); 

if($connect_id) 

//認證 
$bind_id = ldap_bind($connect_id); 

//執(zhí)行搜索 
$search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query); 

//將結(jié)果集合分配給一個數(shù)組 
$result_array = ldap_get_entries($connect_id, $search_id); 

else 

//顯示連接錯誤 
echo "Could no

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
亚洲欧美日韩一区成人| 国产一区二区影视| 欧美xxxx黑人又粗又长| 国产色a在线| 超碰国产在线观看| 欧美日韩**字幕一区| 在线免费看黄av| 国产精品99999| 二区三区中文字幕| 国产精品第八页| 88av在线| 精品卡一卡卡2卡3网站 | 九九热视频免费在线观看| 欧美专区日韩| 国产一级在线观看| 尤物视频在线观看视频| 国产免费自拍视频| 欧美日韩一区二区三区在线播放 | 国产色婷婷在线| 亚洲一区二区三区在线观看网站| 亚洲日本久久久午夜精品| 麻豆精品免费视频入口| 国产黄在线播放| 不卡av免费观看| 国产jizz| 青青久在线视频免费观看| 免费国产阿v视频在线观看| 国产精品免费视频一区一| 亚洲综合天堂网| 国产区av在线| 最近久乱中文字幕| 快射av在线播放一区| 在线观看免费高清完整| 国产系列在线观看| 国产乱码在线| 超碰在线免费播放| 午夜在线视频播放| 二人午夜免费观看在线视频| 国产日产精品久久久久久婷婷| 精品国产一区二区三区不卡在线| 九九色在线观看| 日本成人在线播放| 日韩国产成人| 一本久中文高清| 亚洲成人av高清| av在线网页| 免费在线看v| 久久精品无码一区二区日韩av| 亚洲成人福利| 欧美一级久久久久久久久大| 日本高清中文字幕二区在线| 亚洲电影视频在线| а√资源新版在线天堂| jizz在线免费观看| 亚洲综合色视频在线观看| 午夜小视频在线| 欧美日韩一区二区三区在线播放| www.亚洲视频| 麻豆福利在线观看| 国产视频二区三区| 亚洲精品在线视频免费| 麻豆av在线| 国产精品白浆流出视频| 日本一二三区视频免费高清| 成人精品一区二区三区免费| 国产天堂在线观看| 亚洲成a人v欧美综合天堂麻豆| 美女国产在线| 精品美女调教视频| 伊人影院在线视频| 国产农村一级特黄α**毛片| 国产精品伦一区二区三区视频| 国产极品嫩模在线视频一区| а√天堂8资源在线官网| 中文字幕国产视频| 精品网站www| 99热最新网址| 牛牛精品视频在线| 精品福利影院| 日本中文字幕在线观看| 精品乱码一区二区三四区视频| 免费在线你懂的| 中文在线官网天堂| 国产小视频在线| 午夜影院在线免费观看| 国产日韩欧美精品一区二区三区| 欧美精品久久久久久久小说| 中文视频在线| 国产不卡在线| 国产精品第八页| 国产一级性片| 黄污在线观看| 青青草原av在线| 亚洲视频在线网| 一区二区精品区| 国产成人无吗| 国产精品18久久久久网站| 国内自拍视频在线看免费观看| 亚洲最新永久观看在线| 国产一区久久精品| 成在线人视频免费视频| 欧美亚洲天堂| 久久99亚洲网美利坚合众国 | 精品推荐国产麻豆剧传媒| 最近中文字幕大全中文字幕免费| а√天堂8资源在线官网 | 亚洲精品少妇久久久久久| 99在线免费观看| 一区二区三区四区在线免费视频| 国产精品亚洲第五区在线| 午夜亚洲成人| 免费午夜一级| 国产麻豆精品一区二区三区v视界| 牛牛精品视频在线| 国产乱视频在线观看播放| 天堂在线免费av| 国产秀色在线www免费观看| 国产视频1区| 亚洲91av| 国产精品一品| 精品电影在线| 高清视频一区二区三区四区| √天堂资源地址在线官网| 国产黄色免费看| 性欧美精品xxxx| 丁香视频五月| 91www在线观看| xxxx视频在线| 国产精品国精产品一二| 欧美性xxxx交| 97在线超碰| 中文字幕人成高视频| av超碰在线| 黄污在线观看| 永久免费不卡在线观看黄网站| 九九热在线观看视频| 精品欧美不卡一区二区在线观看| 九九视频精品在线| wwwww在线观看免费视频| 国产一起色一起爱| 在线天堂视频| 中文字幕在线观看播放| eeuss影院在线观看| 国产一卡2卡3卡免费网站| 欧美xxxx黑人又粗又长| 精品卡一卡卡2卡3网站| 国产秀色在线www免费观看| 麻豆精品永久免费视频| 在线一区观看| 国产精品美女一区二区三区四区| 超碰在线观看免费| 日本高清中文字幕二区在线| 精品视频二区| 91欧洲在线视精品在亚洲| 国产网红在线| 国产乱在线观看视频| 黄色在线视频观看网站| 超碰免费在线| 免费女人毛片视频| 超碰国产在线| 狠狠干天天干| 国产中文在线观看| 欧美日韩亚洲国内综合网 | 在线观看电影av| 国产99re66在线视频| 国产精品视频一区麻豆| 国产一级网站视频在线| 最新黄网在线观看| 国产精品99999| 国产福利三区| av一级在线| 超碰在线网站| 最近中文字幕大全中文字幕免费| 国产美女被草| 国产精品免费视频二三区| 国产黄色片大全| 亚洲私人影吧| 久草.com| 国产高清在线观看| 亚洲精品自拍区在线观看| 日本a级黄色| 最新中文字幕在线视频| 国产激情视频网址| 在线影视一区| 青青九九免费视频在线| 国产精品自产拍在线观看2019| 国产网站av| av一级在线| 国产中文字幕在线看| 国产精品久久在线| www.五月色.com| 国产精品久久在线| 热99在线观看| 9色在线视频网站| 丁香婷婷在线观看| 99在线播放| 中文字幕在线永久在线视频| 在线成人综合色一区| 国产美女高潮一区二区三区| 精品国产免费观看一区|