LDAP身份验证php不适用于某些字符

时间:2017-01-05 07:22:11

标签: php active-directory ldap

我通过php将以下代码连接到MS AD服务器:

<?php
    $login='domain\\username';
    $password='somepaswordwithç';
    $ldap=ldap_connect("someserver.com");
    if ($bind = @ldap_bind($ldap, $login, $password)) {
        echo "ok";
    }
    else{
        echo "error while connecting";
    }
?>

它适用于其他字符,如+ / - *“',但不适用于ç和其他特殊字符。

在我的原始代码中,我从帖子中获取了值,但是当我将密码放在上面的代码中时问题是一样的。

1 个答案:

答案 0 :(得分:1)

它出现了我忘了设置ldap选项:

ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);

所以正确的代码是:

<?php
    $login='domain\\username';
    $password='somepaswordwithç';
    $ldap=ldap_connect("someserver.com");
    ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
    if ($bind = @ldap_bind($ldap, $login, $password)) {
        echo "ok";
    }
    else{
        echo "error while connecting";
    }
?>