0 レビュー
1 回答
php-LdapとBindが正しく機能していません
私は、ユーザー名とパスワードが正しいかどうかをチェックする1つの小さなプログラムをPHPで作成しました。正しいパスワードを入力すると「LDAPバインドに成功しました...」というメッセージが表示されますが、Active Directoryでパスワードを変更し、すぐに新しいパスワードまたは古いパスワードを入力すると、「LDAPバインドに成功しました...」というメッセージが表示されます。古いパスワードを入力するとエラーが発生するため、「LDAPバインドに成功しました...」というメッセージが表示される理由がわかりません。以下は私のコードです。私はここで何が欠けていますか?パスワードを変更した後でも正しい応答が得られるようにコードを変更するにはどうすればよいですか。私はPHPプログラミングの初心者であることに注意してください。
<html>
<body>
<?php
$ldaprdn = $_POST['name']; // ldap rdn or dn
$ldappass = $_POST['password']; // associated password
// connect to ldap servers
$ldapconn = ldap_connect("ldap://server")
or die("Could not connect to LDAP server.");
// binding to ldap server
$ldapbind = ldap_bind($ldapconn,$ldaprdn,$ldappass);
if($ldapbind){
echo "LDAP bind successful...";
} else {
$errno = ldap_errno( $ldapconn );
echo $errno;
}
?>
</body>
</html>
わからない
0
レビュー
答え :
解決策:
ディレクトリでanonymous binding
が有効になっているようです。
名前とパスワードでバインドしようとしてもanonymous bindingにフォールバックしないと思いますが、他に問題がある可能性があります。
$_POST
(サニタイズされていないところで、tisk tisk)からバインド名/パスを取得しているので、フォームが実際に投稿データ用に設定されていない可能性があります(空白になります)値)、またはフィールド名が正しくありません。 $ldaprdn == ""
の場合は匿名でバインドされるので、その値をチェックして、何か役立つものであることを確認してください。
Active Directoryを使用しているようですので、おそらくこの adldap
ライブラリの方が便利です
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。