首先启用 LDAP_bind 匿名。我遇到的问题如下:
这段代码可以正常工作,没有问题:
<?php
$ldaprdn = 'uname';
$ldappass = 'password';
$ldapconn = ldap_connect("ldap.example.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
?>
无论如何,下面的这个都会返回“成功”
<?php
$ldaprdn = '';
$ldappass = '';
$ldapconn = ldap_connect("ldap.example.com")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
?>
请注意,此版本中的凭据留空。我不喜欢这样一个事实,即如果将凭据留空,这件事就会让你进去。我做错了什么吗?或者只是这个 ldap_bind() 很复杂。我认为如果我用三个参数调用函数,它不应该默认为匿名。
我可以通过将用户名和密码设置为虚拟值来解决这个问题,以防用户名和密码留空,但这根本不是一个好习惯。请帮忙...
来源:http://php.net/manual/en/function.ldap-bind.php