亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

使用PHP連接LDAP服務(wù)器

2020-04-18 13:10:35
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

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

  我們來(lái)做這樣幾件事:

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

  設(shè)置公共LDAP服務(wù)器的信息:

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

<?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] = ""; 


//如果沒(méi)有選擇服務(wù)器的話將它設(shè)置為0 
if(!$SERVER_ID) 
$SERVER_ID=0; 

?> 
建立LDAP查詢(xún):

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

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

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

<?php 

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

?> 

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

  如果連接成功,處理查詢(xún):
  如果連接成功的話,我們將得到一個(gè)有效的LDAP連接識(shí)別號(hào),這樣我們就可以處理查詢(xún)。

<?php 

if($connect_id) 

//認(rèn)證
$bind_id = ldap_bind($connect_id); 

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

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

else 

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

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

  在經(jīng)過(guò)認(rèn)證后,我們就可以使用ldap_search()函數(shù)來(lái)執(zhí)行查詢(xún),產(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〉
/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ù)組,里面包括有查詢(xún)的結(jié)果,并且被格式化用作輸出。首先循環(huán)$result_array中的每個(gè)元素,并且將它分配給一個(gè)兩維的數(shù)組用作排序。同時(shí)我們使用strtolower()函數(shù)將所有的值變?yōu)樾?xiě)。

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

我們循環(huán)已經(jīng)格式化好的數(shù)組,并且將它分配給一個(gè)名字為$result_list的輸出字符,該字符包含了HTML描述。要特別注意的是,在超鏈接中,我使用的是ldap的URL格式。這個(gè)格式的例子類(lèi)似: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表格,它是用來(lái)給用戶(hù)執(zhí)行搜索的。

<?php 
//定制表格
echo " <CENTER><FORM action='/"$PHP_SELF/"' method='/"GET/"'>"; 
echo "Search in:<SELECT name='/"SERVER_ID/"'>"; //循環(huán)以建立SELECT選項(xiàng) 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是一個(gè)全局的常量,代表的是腳本頁(yè)面自身,其中的循環(huán)是用來(lái)通過(guò)我們的$LDAP_NAME變量創(chuàng)建
SELECT選項(xiàng)。

顯示結(jié)果:

現(xiàn)在所有的工作已經(jīng)完成了,我們將打印出結(jié)果集。如果沒(méi)有符合的結(jié)果,將會(huì)顯示"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"; 


?> 

源代碼

  以下是完整的源代碼,只要將它剪切并粘貼到一個(gè)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] = ""; 

//如果沒(méi)有選擇服務(wù)器的話將它設(shè)置為0 
if(!$SERVER_ID) 
$SERVER_ID=0; 

//建立查詢(xún)
$ldap_query = "cn=$common"; 

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

if($connect_id) 

//認(rèn)證 
$bind_id = ldap_bind($connect_id); 

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

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

else 

//顯示連接錯(cuò)誤 
echo "Could no

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
天天做天天爱天天综合网2021| 亚洲最快最全在线视频| 在线欧美不卡| 日韩成人高清| 在线播放av片| 欧美顶级毛片在线播放| 欧美电影免费播放| 日韩黄色免费电影| 久久福利视频导航| 色涩视频在线观看| 91久久久久久白丝白浆欲热蜜臀| 波多野吉衣中文字幕| 红杏aⅴ成人免费视频| 啪啪国产精品| 视频免费在线看| 羞羞视频在线观看不卡| 8x8ⅹ国产精品一区二区二区| 国产成人精品视频免费看| 久久成人羞羞网站| 久久精品色妇熟妇丰满人妻| 久久人人爽人人爽人人片av免费| 久久伊人91精品综合网站| 日韩av中文字幕在线| 成人搞黄视频| 午夜av免费观看| 日韩av网站在线免费观看| 综合国产精品| 欧美日韩视频第一区| 亚洲色成人www永久在线观看| 先锋影视中文字幕| 成人福利电影精品一区二区在线观看| 日本成人激情视频| 国产一区二区丝袜高跟鞋图片| 国产成人午夜99999| 久久国产精品久久w女人spa| 中文在线аv在线| 日韩亚洲欧美高清| 最新中文字幕在线| 97在线视频一区| 99久久免费国产精品| 男人的天堂亚洲在线| 久久久久99精品成人片试看| 1024成人网| 中文字幕人成人乱码亚洲电影| 欧美日韩另类国产亚洲欧美一级| 老鸭窝亚洲一区二区三区| 91精品国产高久久久久久五月天| 在线视频91| 91极品视频在线观看| 中文字幕av一区二区| 免费午夜视频在线观看| 国产乱了高清露脸对白| 免费观看91视频大全| 色婷婷一区二区三区av免费看| 校园春色综合| 色偷偷色偷偷色偷偷在线视频| 色综合老司机第九色激情| 亚洲精品白浆高清久久久久久| 粉嫩一区二区三区性色av| 在线观看一区二区三区三州| 亚洲大胆人体在线| 亚洲久久久久久久| 日韩精品福利片午夜免费观看| 国产精品夜夜爽| 在线播放日韩专区| 日本视频在线| 中文字幕av一区二区三区高| 国产福利资源在线| 美女av在线免费看| 精品国产乱码久久久久久蜜臀网站| 亚洲h精品动漫在线观看| 亚洲GV成人无码久久精品| 美女露胸视频在线观看| 久久人人爽人人爽人人片av不| 视频一区视频二区国产精品| 免费在线小视频| 日韩区在线观看| 欧美国产日韩在线观看成人| 欧美日韩国产成人在线观看| 丰满的少妇愉情hd高清果冻传媒| 欧美日本中文| 美国黄色一级视频| 中文字幕在线观看免费| 国产夫绿帽单男3p精品视频| 亚洲第一中文字幕在线观看| 日韩亚洲一区中文字幕| 久操视频在线观看免费| 免费黄网站观看| 成人高清av在线| www.eeuss影院| 在线免费观看成人网| 久草在线官网| 免费精品视频一区| 在线电影中文字幕| 久久久久久久综合日本| 一级全黄肉体裸体全过程| 日韩精品黄色| 最近2019中文字幕大全第二页| 波多野结衣二区三区| 五月天婷婷综合| 欧美性受xxxx白人性爽| 中文一区一区三区高中清不卡| 久久久久美女| 久久午夜免费视频| 亚洲欧美日韩一区| 在线免费观看av网站| av动漫免费看| 亚洲精品无播放器在线播放| 欧美gvvideo网站| 91丝袜呻吟高潮美腿白嫩在线观看| 五月激情六月丁香| 亚洲国产成人午夜在线一区| 国产又粗又长又硬| 尤物视频免费| www.欧美色| 欧美色图亚洲激情| 午夜视频你懂的| 国产sm主人调教女m视频| 国产成人97精品免费看片| 四虎影视国产在线视频| 91精品国产高清一区二区三区蜜臀| 欧美jizzhd精品欧美满| 国产精品久久99久久| 亚洲欧美综合视频| 欧美日韩国产精品专区| 亚洲高清av| 一区二区在线免费观看| 日韩精品免费观看视频| 三级av免费观看| 亚洲精品一区二区三区网址| 欧美吻胸吃奶大尺度电影| 第三区美女视频在线| 欧美一区二区三区电影| 69国产精品| 蜜桃传媒视频第一区入口在线看| 久久99精品久久久久久动态图| 91精品美女在线| 亚洲精品www久久久| 在线观看视频一区二区欧美日韩| 99久久精品免费观看| vam成人资源在线观看| 久久精品国产精品亚洲毛片| 欧美成人免费全部| 国产在线观看福利| 黄色成人av在线| 精品视频国产| 亚洲美女屁股眼交| 91社区在线观看播放| 久久综合久中文字幕青草| 亚洲精品一区在线观看香蕉| 777一区二区| 亚洲一区二区三区中文字幕在线| 国产成人免费9x9x人网站视频| 国产成人精品一区二区三区网站观看| 日本黄色三级视频| 国产视频一视频二| 欧美日韩一本到| 性生活免费观看视频| 麻豆视频在线播放| 欧美日韩精品在线一区二区| 日本精品入口免费视频| 2018天天操夜夜操| 国产精品露脸视频| 欧美伦理片在线观看| 777欧美精品| 韩国成人漫画| 精品国产va久久久久久久| 暖暖视频在线免费观看| 日本一区二区免费视频| 亚洲爆乳无码一区二区三区| 人人妻人人澡人人爽精品欧美一区| 成人在线免费看片| 成年人看的免费视频| 亚洲妇女av| 色香蕉久久蜜桃| 日本成人精品| 日韩av高清在线播放| 国产免费又粗又猛又爽| 中文字幕国产视频| 日本电影在线观看| 777琪琪电影午夜理伦片| 天天摸天天碰天天爽天天弄| 手机亚洲手机国产手机日韩| 无码国产色欲xxxx视频| av资源在线看片| 日本亚洲欧洲色α| 久久av资源网站| 国户精品久久久久久久久久久不卡| 国内外成人激情视频| 一区二区三区精品视频在线观看| 欧美三级电影在线观看| 成人国产在线| 最新电影电视剧在线观看免费观看| 老司机精品视频一区二区三区| 调教视频免费在线观看| 91精品国产乱码久久久久久蜜臀| 日韩xxxxxxxxx| 国产午夜三区视频在线| 7777精品伊人久久久大香线蕉超级流畅| 中国一级黄色录像| 亚洲国产一区二区三区四区| 精品亚洲精品福利线在观看| 国产精品久久久免费观看| 免费一级大片| 免费一二一二在线视频| 宅男午夜在线| 欧美日韩国产首页在线观看| 国产主播喷水一区二区| 国产精品久久久久免费a∨| 中文字幕一区二区在线视频| 免费在线观看黄视频| 欧美精品一区二区蜜臀亚洲| 亚洲aⅴ天堂av在线电影软件| 亚洲区一区二区三区| 精品久久久久久久久久久下田| 日韩精品小视频| 亚洲午夜精品一区二区国产| 久久国产精品二区| 一区二区三区四区高清精品免费观看| 不卡影院免费观看| 久久a爱视频| 欧美一区 二区 三区| 豆国产97在线|亚洲| 欧美一区二区三区电影在线观看| 亚洲综合成人在线视频| 国产熟妇搡bbbb搡bbbb| 91免费在线视频观看| ,一级淫片a看免费| 色哟哟视频在线| 欧美一区二区福利| 九色porny在线| 91老师国产黑色丝袜在线| 妺妺窝人体色www聚色窝仙踪| 国产精品一香蕉国产线看观看| 欧美精品久久久久久久久老牛影院| 国内外成人免费激情在线视频| 欧美大陆一区二区| 国产视频在线播放| 欧美片第1页| 国产日韩1区| 久久久国产精品人人片| 欧美片网站免费| 91久久精品国产| 91国拍精品国产粉嫩亚洲一区| www.男人天堂网| 久久久久久com| 亚洲一级一区| 深夜福利成人| 成人久久一区二区三区| 中文字幕久热精品视频免费| 国户精品久久久久久久久久久不卡| 亚洲一区二区偷拍| 日韩网红少妇无码视频香港| 日韩av午夜| 天天操天天干天天舔| 在线播放91灌醉迷j高跟美女| 国产精品久久久久久久久免费| 亚洲精品久久久蜜桃| 成人eeuss影院在线观看| 亚洲一区成人| 高清无码视频直接看| 奇米狠狠一区二区三区| 激情文学综合插| 狠狠色综合播放一区二区| 在线免费看av网站| 国产高清免费在线| 久久精品国产精品青草| 不卡的av中国片| 日av在线播放| 户外露出精品视频国产| 日本aⅴ亚洲精品中文乱码| 尤物tv在线精品| 偷拍自拍亚洲| 奇米精品一区二区三区| 亚洲美女少妇撒尿| 伊人久久大香线蕉综合75| 精品无码av无码免费专区| 福利在线免费视频| 欧美日韩国产一区二区| 97成人精品区在线播放| 欧美肥婆xxxx欧美另类| 4438x成人网最大色成网站| 亚洲黄网站在线观看| 精品久久久久中文字幕小说| 久热在线视频观看| 久久精品免费| 日韩高清精品免费观看| 激情伊人五月天| 精品少妇一区二区三区在线| 插插插亚洲综合网| 国产寡妇色xxⅹ交肉视频| 日韩伦理在线一区| 色婷婷激情一区二区三区| 一区二区在线免费| 久久九九全国免费| 91精品国产自产精品男人的天堂| 欧美—级a级欧美特级ar全黄| 国产女同在线观看| 黑森林福利视频导航| 亚洲视频一二三区| 中文字幕在线观看视频一区| 亚洲亚洲精品在线观看| 在线不卡一区二区三区| 日本一二区视频| 国产主播在线一区| 日韩毛片无码永久免费看| 豆花视频一区二区| 在线观看www91| 91美女片黄在线| 在线视频2区| 亚洲精品在线观看视频| 一区二区三区四区五区视频在线观看| 国产剧情在线观看一区二区| 国产在线视频91| 久久国产精品久久久久久小说| a级毛片免费观看在线| 国产精品久久久久影院| 成人午夜888| 久久99精品国产一区二区三区| 亚洲欧美一区二区三区情侣bbw| 国产精品1000部啪视频| 国产综合在线视频| 波多野结衣亚洲一二三| 国产一精品一aⅴ一免费| 91麻豆精品国产91久久久更新资源速度超快| 91麻豆精品国产自产在线观看一区| 中文字幕久久久av一区| 国产精品2024|