PHP LDAP编程

(0 comments)

PHP LDAP函数参考手册:http://www.php.net/ldap

一、连接LDAP服务器

连接到LDAP后,bind用户访问LDAP目录树,如果是匿名登陆,那么在bind时不需要用户名和密码参数。

// Define configuration
$connect   = ldap_connect("ldap.liaojl.com");
$binddn    = "cn=Manager,dc=liaojl,dc=com";
$bindpw    = "secret";

// Bind LDAP server
$bind      = ldap_bind($connect, $binddn, $bindpw); 

二、搜索结果集

搜索目录树时,$filter是条件是必需的。如果你真的想要遍历整个目录树,可以使用通配符,例如:(cn=*)

结果集中索引名称必须是小写,例如userPassword必须用userpassword表示,否则访问时提示无法找到。

$basedn = "ou=person,dc=liaojl,dc=comm";
$filter = "(objectClass=person)";

$search   = ldap_search($connect, $basedn, $filter);
$result   = ldap_get_entries($connect, $search);

for ($i=0; $i<$result["count"]; $i++) {
    echo "DN: ".$result[$i]["dn"];
    echo "DN: ".$result[$i]["cn"][0];
}

说明:

  • $result["count"]是结果的总数,其实就是计算$info数组长度。
  • $result[$i]["dn"]项目的DN,其他项目都是数组,可以用["count"]计算数组长度。
  • $result[$i]["name"][N],name是Attribute的名称,N一般为0,表示第一个值。
  • $ldap_result[$i]["cn"]0,其中索引名是LDAP的Attribute,注意索引名称必须是小写,例如:telephoneNumber要写成telephonenumber。

多条过滤条件:

$filter = "(&(objectClass=user)(objectCategory=person)
(|(name=$name*)(displayname=$name*)(cn=$name*)))";

三、记录操作

添加记录

添加记录需要两个参数,记录DN和记录内容,记录内容保存在数组中。

$userdn = "cn=".$username.",ou=Employee,dc=liaojl,dc=com";

$userdata["cn"] = $username;
$userdata["display-name"] = "Daniel Liao";
$userdata["mail"] = "liaojl@liaojl.com";
$userdata["l"] = "Shanghai";
$userdata["telephoneNumber"] = "26335751";
$userdata["mobile"] = "13801772323";


if (ldap_add($connect, $userdn, $userdata) == 1) {
    echo "Add User Success!!!";
}

修改记录

修改记录的函数参数与添加记录类似,记录数组中只包括要修改的内容。通常先根据条件搜索到记录的DN,然后再修改记录属性。

$search = ldap_search($connect, $basedn, $filter);
$result = ldap_get_entries($connect, $search);
$userdn = $result[0]["dn"];

$userdata["telephoneNumber"] = $telephoneNumber;
$userdata["mobile"] = $mobile;

if (ldap_mod_replace($connect, $userdn, $userdata) == 1) {
    echo "Modify User Success!!!";
}

如果属性存在就替换,如果不存在则添加。

删除记录

删除记录只需要给出记录的DN,先根据条件搜索到记录的DN,然后再删除记录。

$search = ldap_search($connect, $basedn, $filter);
$result = ldap_get_entries($connect, $search);
$userdn = $result[0]["dn"];

if (ldap_delete($connect, $userdn) == 1){
            echo "Delete User Success!!!";
}

Currently unrated

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required