まず、匿名の 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() が複雑です。3 つのパラメーターを指定して関数を呼び出すと、デフォルトで匿名にすべきではないと思います。
ユーザー名とパスワードが空白のままになっている場合に備えて、ユーザー名とパスワードをダミーの値に設定することで回避できますが、これはまったく良い方法ではありません。助けてください...
ソース:http://php.net/manual/en/function.ldap-bind.php