使用PHP连接LDAP服务器

2016-01-29 13:35 72 1 收藏

使用PHP连接LDAP服务器,使用PHP连接LDAP服务器

【 tulaoshi.com - PHP 】

转自:http://www.webdn.com/web_file/program/php/0602080309/

【摘 要】本文将演示如何使用PHP连接一个LDAP服务器。具体的例子是连接到一个公共的LDAP服务器并且进行搜索。这个例子模拟的是Netscape Communicator 4.*,通过自己的地址本连接到LDAP资源。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

 

本文将演示如何使用PHP连接一个LDAP服务器。具体的例子是连接到一个公共的LDAP服务器并且进行搜索。这个例子模拟的是Netscape Communicator 4.*,通过自己的地址本连接到LDAP资源。

 

  LDAP介绍

  可能不少人已经听说过LDAP,但是却不了解它具体是什么东东和如何工作。在这里我将不会很详细地介绍LDAP,只是对该协议做一个简介。

  LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。

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

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

要求

   PHPV.4(以前的版本也可以,不过没有经过测试),编译支持LADP,即使用编译时带--with-ldap公共的LDAP目录。在例子中提供了两个。

例子概览

1.设置公共LDAP服务器的信息
2.创建一个LDAP查询
3.连接到LDAP服务器
4.如果连接成功,处理查询
5.格式化输出
6.关闭连接
7.设计搜索界面的HTML表格
8.显示结果

设置公共LDAP服务器的信息

  我们要做的第一件事情是定义所有欲搜索的LDAP服务器的信息

"LDAP_NAME" = 新的LDAP项目的名字
"LDAP_SERVER" = 新的LDAP项目的IP地址或者主机名
"LDAP_ROOT_DN" = 新的LDAP项目的根的辨识名

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

?>

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

  一旦我们与LDAP服务器建立好连接,我们就必须进行认证。PHP在连接大多数的数据库时,都是通过发送用户名和密码来进行的。不过,在LDAP中,认证是未知的,直到进行一个b

来源:http://www.tulaoshi.com/n/20160129/1490755.html

延伸阅读
标签: 服务器
远程连接服务器for Windows 2003 & 2008   1、选择开始菜单-所有程序-附件-远程桌面连接 TIPS:也可以使用 开始菜单-运行,输入命令mstsc后回车,就可以启动远程桌面连接;或者使用快捷键Win+R来启动运行窗口,输入命令mstsc后回车启动远程桌面连接 2、在计算机后面的输入框中,输入您的云服务器的外网IP地址,然...
标签: PHP
    服务器负载太大而影响程序效率也是很常见的,我们需要对此进行测试。这里我以目前最常用的Apache服务器为例。 Apache服务器自带有一个叫AB(ApacheBench)的工具,在bin目录下。使用这个轻巧的工具我们可以对服务器进行负载测试,看看在重负荷之下服务器的表现如何。ApacheBench 可以针对某个特定的 URL 仿真出连续...
标签: PHP
转自:http://edu.mycodes.net/html/2006-04/235.shtml 有时候,我们需要在WINDOWS服务器中安装多个不同版本的PHP环境,或采用不同的PHP.ini配置,例如在使用中国E商务网的IONCUBE系统对PHP程序进行加密后,要在PHP.ini中设置加载选项目,但这个选项和zend加密程序解释器不能同时存在,如果在服务器中有另外程序采用ZEND加密的话,...
标签: 服务器 LOL
运行 打开搜索运行(WIN键+R)输入services.msc 找到WINDOWS FIREWALL 手动设置 启动类型设置成手动,然后下面的服务状态停止掉点确认,就OK了。 助手修复游戏 或者是用lol助手修复一下游戏。 关闭用户控制 首先把WIN7的用户控制关掉,就在控制面板-用户帐户和家庭安全-用户账户,下面有个“更改用户账户控制设...
标签: 电脑
找到连接网络 找到你所连接的网络,右键点击,选择状态选项。 选择网络诊断选项 进入这个窗口后,选择网络诊断选项,诊断结束后重新连接网络即可。 重新连接游戏 如果还是不能进入游戏,则可以选择重启电脑之后登陆,进行下面操作。 右击开始 点击电脑桌面右下方的开始,出现如下窗口,选择控制面板。 ...

经验教程

698

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部