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];
}
说明:
多条过滤条件:
$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!!!";
}
Comments
There are currently no comments
New Comment