Php Ldap和Bind工作不正常

Php Ldap和Bind工作不正常,php,Php,我用PHP编写了一个小程序,用来检查用户名和密码是否正确。无论何时输入正确的密码,我都会收到“LDAP绑定成功…”消息,但一旦我在Active directory中更改密码并立即输入新密码或旧密码,我就会收到“LDAP绑定成功…”消息。当我输入旧密码时,我无法理解为什么会收到“LDAP绑定成功…”消息,因为它应该会给我一个错误。下面是我的代码。我错过了什么?如何修改我的代码,以便即使在更改密码后也能得到正确的答复。请注意,我是PHP编程新手 <html> <body>

我用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>

听起来您的目录中启用了
匿名绑定

但是,我认为尝试使用名称和密码绑定不会退回到匿名绑定,因此可能还有其他问题

我注意到您正在从
$\u POST
(未初始化,顺便说一句,tisk-tisk)获取绑定名/密码,因此可能您的表单实际上没有为POST数据设置(导致空白值),或者您的字段名不正确。我知道如果
$ldaprdn==”
那么它将匿名绑定,所以请检查该值以确保它是有用的


我知道您正在使用Active Directory,所以您可能会发现它更有用

谢谢您的回复。。。当我输入错误的密码时,我出错了。只有在输入旧密码或新密码时,我才会收到“LDAP绑定成功…”消息。我已经用匿名绑定检查了我的代码,并且工作正常。例如,如果您输入正确的用户名和密码(例如用户:stackoverflow和密码:1234),那么您将获得“LDAP绑定成功”。现在,在获得成功消息后,如果您输入了错误的密码(用户:stackoverflow和密码:1235),您将得到错误。直到这里,我的代码运行良好。如果您将更改stackoverflow用户id的密码,例如,新密码现在是Active directory中的(新密码:0987),如果您再次运行程序并输入(用户:stackoverflow和密码:1234),您将获得“LDAP绑定成功”@user1577864我仍然会验证
$ldaprdn
$ldappass
的实际值。您是否在用户或密码中使用了任何非ASCII字符?我只是回显$ldaprdn和$ldappass。我正在获取正确的用户名和密码。我在测试密码中使用了$,%,但我也尝试了简单密码以及大写、小写字母和数字的组合。@user1577864使用
adLDAP
时是否会得到相同的结果?