登录论坛 | 注册会员 设为首页 | 收藏本站
当前位置 : 首页>软件学院>程序开发>PHP教程>正文
 
使用PHP连接LDAP服务器

http://www.dbit.cn 2008/4/23 15:40:41  来源:本站  编辑:叶子
 

  LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。要特别注意的是,LDAP通常作为一个hierarchal数据库使用,而不是一个关系数据库。因此,它的结构用树来表示比用表格好。正因为这样,就不能用SQL语句了。

  简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。

  我们来做这样几件事:

  设置公共LDAP服务器的信息;创建一个LDAP查询;连接到LDAP服务器;如果连接成功,处理查询;格式化输出;关闭连接;设计搜索界面的HTML表格并显示结果。

  设置公共LDAP服务器的信息:

  我们要做的第一件事情是定义所有欲搜索的LDAP服务器的信息:
  "LDAP_NAME" = 新的LDAP项目的名字
  "LDAP_SERVER" = 新的LDAP项目的IP地址或者主机名
  "LDAP_ROOT_DN" = 新的LDAP项目的根的辨识名<XMP>
  <?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查询:

  前面已经提到,LDAP查询与SQL查询是不一样的。因此,语句要受到一定的限制,以下是一个基本的例子。

  //Create Query $ldap_query = "cn=$common"; 

  在我们的例子中,“cn”是我们要进行搜索的属性,而$common是由搜索的form中得到的字符串变量。LDAP的查询语句语句可使用通配符‘*’。例如‘$stanley’将可以找出‘dan stanley’。

  连接到LDAP服务器:

  以下的函数连接到一个LDAP资源,并且将连接的识别号赋给一个变量,就好象连接到一个通常的数据库一样,例如MySQL。
  <?php 

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

  ?> 

  在我们的例子中,“$connect_id”是连接的识别号,$LDAP_SERVER是可能的ldap服务器数组,
而$SERVER_ID是由搜索表格得到的LDAP服务器变量。

  如果连接成功,处理查询:
  如果连接成功的话,我们将得到一个有效的LDAP连接识别号,这样我们就可以处理查询。

  <?php 

  if($connect_id) 
  { 
  //认证
  $bind_id = ldap_bind($connect_id); 

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

  //将结果集合分配给一个数组 
  $result_array = ldap_get_entries($connect_id, $search_id); 
  } 
  else 
  { 
 //显示连接错误 
  echo "Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]"; 
  } 

  ?> 
  一旦我们与LDAP服务器建立好连接,我们就必须进行认证。PHP在连接大多数的数据库时,都是通过发送用户名和密码来进行的。不过,在LDAP中,认证是未知的,直到进行一个bind操作。在我们的例子中,“$bind_id”是绑定连接的标识符。我们是通过匿名绑定到公共的LDAP服务器的。因此,在执行ldap_bind()时,只使用连接识别号就可以了,无需其它的参数。

本新闻共5页,当前在第1页  1  2  3  4  5  

收藏】【打印】【进入论坛
  相关文章:

·黑客攻击Discuz内幕:PHPWind逃一劫
·详解如何正确配置PHP开发环境
·php自定义获取来源ip的函数
·详解如何正确配置PHP开发环境
·PHP教程:如何才能自动获取关键词 
·PHP服务器变量设置方法
·PHP实现给上传图片加水印图案
·windows服务器PHP安装功略
·windows服务器PHP安装功略
·PHP面向对象分析设计的61条军规 
·PHP服务器变量设置方法介绍 

 
 
 
最新文章

抢先苹果,消息称英特尔芯片采用台积电
三星揭晓业内首款单条 512GB DDR5 内存
vivo 高端新机爆料:120Hz 曲面屏 + 天
vivo Y21 在印度正式上市:Helio P35 芯
微星推出 GeForce RTX 3080 Sea Hawk X
消息称三星 Galaxy Tab S8 系列平板将放
机械革命推出 F6 轻薄本:16 英寸全面屏
英特尔 12 代 Alder Lake CPU 600 系列
雷军:向小米手机 1 首批用户每人赠送价
小米李明谈用户被踢出 MIUI 测试版:大

推荐文章
1
2
3
4
5
6
7
8
9
10
叛逆嫩模性感写真
宫如敏不雅照疯传 看张馨予韩一菲兽兽谁
不惧孔子抢位 阿凡达游戏影音配置推荐
2015第十七届“东北安博会”火爆招商
第十六届东北国际公共安全防范产品博览
2016年第五届中国国际商业信息化博览会
2016年第五届中国国际POS机及相关设备展
互联网电视熟了吗 2013最火电视深解析
桑达获邀出席2015中国(广州)国际POS机
宝获利报名参加“2015年度中国POS机行业
八卦图解 More>>
叛逆嫩模性感写真 宫如敏不雅照疯传 看张馨予韩一菲
周伟童魔鬼身材日本性感写真图  联想V360笔记本模特写真