PHP中的LDAP功能函(轉)

post0發表於2007-08-10
PHP中的LDAP功能函(轉)[@more@]

一、LDAP簡介

LDAP是輕量級目錄訪問協議,應用於目錄服務中.目錄是一種特殊的資料庫,它

將資料資訊儲存在一個樹狀結構中。這種結構和計算機硬碟的目錄結構相似。在

一個全球的目錄中,根目錄就是整個世界,第一級子目錄就是各個國家.底一級

的目錄結構中就包含有記錄公司、組織或者地方的相關資訊的目錄項。更低一級

的目錄結構中的目錄項就可以記錄個人、裝置或者文件的資訊.

為了訪問存放在硬碟上一個子目錄中的檔案,可能要用到下面的引用方法:

/usr/local/myapp/docs

上面的引用方法是用"/"將目錄節點分開,讀的順序是從左到右.

與訪問檔案的引用方法相對應,訪問一個LDAP目錄中的目錄項的引用就是可區分

名(distinguished name),簡寫為"DN".下面就是一個例子:

cn=John Smith,ou=Accounts,o=My Company,c=US

上面的引用方法是用逗號來將各個目錄節點分開,讀的順序是從右到左,就象下

面的讀法:

country = US

organization = My Company

organizationalUnit = Accounts

commonName = John Smith

就象沒有規定死的規則來組織硬碟上的目錄結構一樣,在一個目錄伺服器可以建立

很多符合目的要求的資訊模型結構,但是建立資訊模型結構是要有一定的約定.這

就是說,如果要寫出訪問目錄伺服器中資訊的程式碼,就必需瞭解目錄伺服器中的信

息模型結構,這和使用資料庫進行開發是一樣的道理.

完整的例子

例子是從目錄伺服器中檢索出屬性"sn"以"S"為第一個字母的所有目錄項,並顯

示目錄項中"cn"和"mail"屬性的屬性值.

Example 1. LDAP search example

t?php

// basic sequence with LDAP is connect, bind, search, interpret search

// result, close connection

echo "th3>LDAP query testt/h3>";

echo "Connecting ...";

$ds=ldap_connect("localhost"); // must be a valid LDAP server!

echo "connect result is ".$ds."tp>";

if ($ds) {

echo "Binding ...";

$r=ldap_bind($ds); // this is an "anonymous" bind, typically

// read-only access echo "Bind result is

echo "Bind result is ".$r."tp>";

echo "Searching for (sn=S*) ...";

// Search surname entry

$sr=ldap_search($ds,"o=My Company, c=US", "sn=S*");

echo "Search result is ".$sr."tp>";

echo "Number of entires returned is ".ldap_count_entries($ds,$sr)."tp>";

echo "Getting entries ...tp>";

$info = ldap_get_entries($ds, $sr);

echo "Data for ".$info["count"]." items returned:tp>";

for ($i=0; $iecho "dn is: ". $info[$i]["dn"] ."tbr>";

echo "first cn entry is: ". $info[$i]["cn"][ 0] ."tbr>";

echo "first email entry is: ". $info[$i]["mail"][ 0] ."tp>";

}

echo "Closing connection";

ldap_close($ds);

} else {

echo "th4>Unable to connect to LDAP servert/h4>";

}

?>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940555/,如需轉載,請註明出處,否則將追究法律責任。

相關文章