加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

初识 PHP函数之 ldap_connect()

(2012-02-10 11:04:36)
标签:

it

分类: php技术相关

链接  LDAP 服务器。

语法: int ldap_connect(string [hostname], int [port]);

返回值: 整数

函数种类: 网络系统

 

LDAP简介

  简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。
  LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。
  LDAP最新的rfc规范文档是RFC 4511 Lightweight Directory Access Protocol (LDAP): The Protocol

LDAP的实质

  LDAP其实是一电话簿,类似于我们所使用诸如NIS(Network Information Service)、DNS (Domain Name Service)等网络目录,也类似于你在花园中所看到的树木。
  不少LDAP开发人员喜欢把LDAP与关系数据库相比,认为是另一种的存贮方式,然后在读性能上进行比较。实际上,这种对比的基础是错误的。LDAP和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库),前者是存贮模式和访问协议。LDAP是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言SQL属同一级别。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。

 

 

内容说明

本函数用来链接 LDAP 的服务器。参数 hostname 若省略,则返回现在的链接代号,也就是 handle。参数 port 亦可省略,默认值为 389。执行若无错误则返回链接代号,发生错误则返回 false。

 

 

 


LDAP (Lightweight Directory Access Protocol) 是一种轻量的目录存取协议,提供客户从各个角落连接到目录服务器中。在 RFC 1777 及 RFC 1778 中对 LDAP 有较深入的描述,亦可参考 Netscape 站上有关 LDAP 方面的资料。
在 LDAP 的协议之中,很像硬盘目录结构或倒过来的树状结构。LDAP 的根就是全世界,第一级是属于国别 (countries) 性质的层级,之后可能会有公司 (organization) 的层级,接着是部门 (organizationalUnit),再来为个人。而就像文件,每个人都会有所谓的显名 (distinguished name, 简称 dn),dn 可能像酱子 cn=John Smith,ou=Accounts,o=My Company,c=US。

 

<?php
// 本例使用到 connect, bind, search, interpret search
// result, close connection 等等 LDAP 的功能。
echo "<h3>LDAP 搜寻测试</h3>";
echo "连接中 ...";
$ds=ldap_connect("localhost");  // 先连上有效的 LDAP 服务器
echo "连上 ".$ds."<p>";

if ($ds) { 
    echo "Binding ..."; 
    $r=ldap_bind($ds);          // 匿名的 bind,为只读属性
    echo "Bind 返回 ".$r."<p>";
    echo "Searching for (sn=S*) ...";  // 找寻 S 开头的姓氏
    $sr=ldap_search($ds,"o=My Company, c=US", "sn=S*");  
    echo "Search 返回 ".$sr."<p>";
    echo "S 开头的姓氏有 ".ldap_count_entries($ds,$sr)." 个<p>";
    echo "取回姓氏资料 ...<p>";
    $info = ldap_get_entries($ds, $sr);
    echo "资料返回 ".$info["count"]." 笔:<p>";
    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn 为: ". $info[$i]["dn"] ."<br>";
        echo "cn 为: ". $info[$i]["cn"][0] ."<br>";
        echo "email 为: ". $info[$i]["mail"][0] ."<p>";
    }
    echo "关闭链接";
    ldap_close($ds);
} else {
    echo "<h4>无法连接到 LDAP 服务器</h4>";
}
?>

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有