当前位置:操作系统 > Unix/Linux >>

PHP中的LDAP功能函

一、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; $i<$info["count"]; $i++) {

  echo "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>";

  }

  ?>
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,