仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1792|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之甚么是LDAP

[复制链接]
灵魂腐蚀 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:28:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢?   LDAP是甚么
LDAP是一个用来宣布目次信息到很多分歧资本的协定。凡是它都作为一个集中的地址本利用,不外依据组织者的需求,它可以做得加倍壮大。
  LDAP最根基的模式是一个毗连数据库的尺度体例。该数据库为读查询作了优化。因而它可以很快地失掉查询了局,不外在其它方面,例如更新,就慢很多。要出格注重的是,LDAP凡是作为一个hierarchal数据库利用,而不是一个关系数据库。因而,它的布局用树来暗示比用表格好。正由于如许,就不克不及用SQL语句了。

  复杂说来,LDAP是一个失掉关于人或资本的集中、静态数据的疾速体例。

LDAP是轻量目次会见协定(Lightweight Directory Access Protocol)的缩写,实际上是一话号码簿,相似于咱们所利用诸如NIS(Network Information Service)、DNS (Domain Name Service)等收集目次,也相似于你在花圃中所看到的树木。
LDAP是一种特别的数据库。然而LDAP和普通的数据库分歧,分明这一点是很主要的。 LDAP对查询停止了优化,与写功能比拟LDAP的读功能要优异良多。
1.1 LDAP的存储划定规矩
辨别名(DN,Distinguished Name)
和天然界中的树分歧,文件体系/LDAP/德律风号码簿目次的每片枝叶都最少有一个举世无双的属性,这一属性可以匡助咱们来区分这些枝叶。
在文件体系中, 这些举世无双的属性就是带有完全途径的文件名。好比/etc/passwd,该文件名在该途径下是举世无双的。固然咱们可以有/usr/passwd, /opt/passwd,然而依据它们的完全途径,它们依然是独一的。
在LDAP中,一个条目标辨别称号叫做“dn”或叫做辨别名。在一个目次中这个称号老是独一的。好比,我的dn是"uid=aghaffar, ou=People, o=developer.ch"。不成能有不异的dn,然而咱们可以有诸如"uid=aghaffar, ou=Administrators, o=developer.ch"的dn。这同下面文件体系中/etc/passwd 和 /usr/passwd的例子很相似。
咱们有举世无双的属性,在"ou=Administrators, o=developer.ch" 中uid和在"ou=People, o=developer.ch"中的uid。这其实不抵触。
CN=Common Name 为用户名或办事器名,最长可以到80个字符,可觉得中文;
OU=Organization Unit为组织单位,最多可以有四级,每级最长32个字符,可觉得中文;
O=Organization 为组织名,可以3―64个字符长
C=Country为国度名,可选,为2个字符长

LDAP目次以一系列“属性对”的模式来存储纪录项,每个纪录项包含属性类型和属性值(这与关系型数据库用行和列来存取数据有基本的分歧)。
mail = testmail@mccc.net
othermailbox = testmailother@mccc.com
givenname = givenname
sn = test sn
属性可添加,以下一个属性必需赋值:
objectclass=person (值为:person 或 server 或 organization 或 其他自界说的值)

2 Php若何操作LDAP
2.1 Php若何与LDAP毗连和封闭
$ds=ldap_connect("ServerName")
ServerName是LDAP的办事器名,

例:
$ds=ldap_connect(“10.31.172.30:1000”)
前往值是:true 或 false

封闭毗连
ldap_close($ds);

2.2 在php中若何搜刮用户信息

$ds=ldap_connect("10.31.172.30:1000");
//起首毗连上办事器
$justthese = array("cn","userpassword",”location”);
//搜刮函数中的一个参数,请求前往哪些信息,
//以上传回cn,userpassword,location,这些都请求小写
$sr=ldap_search($ds,"o=jite", "cn=dom*",$justthese);
//第一个参数开启LDAP的代号
//第二个参数最根基的 dn 前提值 , 例:”o=jite,c=cn”
//第三个参数 filter 为布林前提,它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案.
// ’o’为组织名,’cn’ 为用户名,用户名可用通配符 ’*’
echo "domadmin姓氏有".ldap_count_entries($ds,$sr)." 个<p>";
//ldap_count_entries($ds,$sr)传回纪录总数

$info = ldap_get_entries($ds, $sr);
//LDAP的全体传回材料
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>"; //显示mail
echo "email为:". $info[$i][“userpassword"][0] ."<p>"; //显示加密后的暗码
}
2.3 添加用户
$ds=ldap_connect("10.31.172.30:1000");
//起首毗连上办事器
$r=ldap_bind($ds,"cn=domadmin,o=jite","password");
//系住一个办理员,有写的权限
// cn=domadmin,o=jite按次不克不及变
$info["cn"]="aaa"; //必填
$info["userpassword"]="aaa";
$info["location"]="shanghai";
$info["objectclass"] = "person"; //必填person为团体,还有server…
ldap_add($ds, "cn=".$info["cn"].",o=jite", $info);
ldap_unbind($ds);
//作废绑定
ldap_close($ds);
//封闭毗连
2.4 删除用户
$ds=ldap_connect("10.31.172.30:1000");
//起首毗连上办事器
ldap_bind($ds,"cn=domadmin,o=jite","password");
//绑定办理员,有删除的权限
$dn="cn=dingxf,o=jite";
ldap_delete($ds, $dn);
//删除用户
ldap_unbind($ds);
//作废绑定
ldap_close($ds);
//封闭毗连
2.5 修正用户材料
$ds=ldap_connect("10.31.172.30:1000");
//起首毗连上办事器
ldap_bind($ds,"cn=domadmin,o=jite","password");
//绑定办理员,有修正的权限
$dn="cn=dingxf,o=jite";
//用户dn
$info["userpassword"]="aaa"; //要修正的信息,放在数组变量中
$info["location"]="shanghaisdaf";

ldap_modify($ds, $dn , $info);
//修正函数
ldap_unbind($ds);
//作废绑定
ldap_close($ds);
//封闭毗连
2.6 用户登录验证
$ds=ldap_connect("10.31.172.30:1000");
//起首毗连上办事器
if (ldap_bind($ds,"cn=dingxf,o=jite","dingxf")){
echo "验证经由过程";
}else{
echo "验证欠亨过";
}
ldap_unbind($ds);
//作废绑定
ldap_close($ds);
//封闭毗连




注:此办法对照复杂,适用,它也有缺乏的地方,假如欠亨过,ldap_bind()提醒它自带的提醒语:”Warning: LDAP: Unable to bind to server: Inappropriate authentication in /home/htdocs/jldl.net/ldap/test.php3 on line 16”  多个成员之间重复做相同的工作,很容易因为交流沟通的时候没有进行一致性的文档要求而出现不明错误,严重影响开发进度,导致在预定时间内无法完成该项目或者完成的项目跟原先计划所要实现的项目功能不符合。
深爱那片海 该用户已被删除
沙发
发表于 2015-2-4 13:11:31 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
蒙在股里 该用户已被删除
板凳
发表于 2015-2-9 23:08:38 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
山那边是海 该用户已被删除
地板
发表于 2015-2-28 04:24:46 | 只看该作者
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
爱飞 该用户已被删除
5#
发表于 2015-3-9 20:52:23 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
透明 该用户已被删除
6#
发表于 2015-3-10 23:44:44 | 只看该作者
爱上php,他也会爱上你。
小妖女 该用户已被删除
7#
发表于 2015-3-17 16:08:19 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
因胸联盟 该用户已被删除
8#
发表于 2015-3-19 02:19:31 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
兰色精灵 该用户已被删除
9#
发表于 2015-3-20 03:40:00 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-21 20:15:15 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
飘灵儿 该用户已被删除
11#
发表于 2015-3-22 05:07:52 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
只想知道 该用户已被删除
12#
发表于 2015-3-27 09:03:51 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
乐观 该用户已被删除
13#
发表于 2015-3-27 15:09:47 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
14#
发表于 2015-4-3 04:39:40 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
admin 该用户已被删除
15#
发表于 2015-4-12 14:41:21 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
若天明 该用户已被删除
16#
发表于 2015-4-17 06:12:42 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
变相怪杰 该用户已被删除
17#
发表于 2015-5-12 13:10:36 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
再现理想 该用户已被删除
18#
发表于 2015-6-4 12:47:37 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
精灵巫婆 该用户已被删除
19#
发表于 2015-6-11 17:31:47 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
柔情似水 该用户已被删除
20#
发表于 2015-6-17 00:39:57 | 只看该作者
实践是检验自己会不会的真理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-27 14:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表