首先启用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
答案 0 :(得分:1)
您是否正在为网络应用进行LDAP身份验证?如果是这样,这就是你需要做的事情:
换句话说,不要只使用传入的用户名并尝试使用它进行绑定。
*如果您提供有关您要执行的操作以及您正在使用的LDAP服务器的更多详细信息,我可以提供更详细的答案。