php - 如何识别 ldap_bind() 上的不同错误? PHP

标签 php error-handling ldap

我正在使用 ldap_bind 连接到 Zimbra 服务器以对用户进行身份验证。我的问题是 ldap_bind() 仅在 PHP 上触发警告。为了抑制这种情况,我使用@。但是,我希望能够确定天气是“无效凭据”或“无法绑定(bind)服务器”问题。

这是我的代码:

private function ldap($email, $password) {
    $login = explode('@', $email);
    $name = $login[0];
    $domain = str_replace('.', ',dc=', $login[1]);
    $dn = 'uid=' . $name . ',ou=people,dc=' . $domain;
    $ldap['user'] = $name;
    $ldap['pass'] = $password;
    $ldap['host'] = 'webmail.' . $login[1];
    $ldap['port'] = 389;
    $ldap['dn'] = $dn;
    $ldap['base'] = '';

    $ldap['conn'] = ldap_connect($ldap['host'], $ldap['port']);        
    ldap_set_option($ldap['conn'], LDAP_OPT_PROTOCOL_VERSION, 3);

    // This will cause a notice error level, which cannot be catched. Supress the error and validate afterwards.        
    $ldap['bind'] = @ldap_bind($ldap['conn'], $ldap['dn'], $ldap['pass']);

    if ($ldap['bind']) {
        return true;
    } else {
        throw new NavException('controller.usuario.ldap.password');
    }
}

最佳答案

您可以使用ldap_error获取最后一条错误消息。另请参见 ldap_errno 和 ldap_err2str

关于php - 如何识别 ldap_bind() 上的不同错误? PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997642/

相关文章:

ubuntu - 用于 ubuntu 或本地 LDAP 服务器的 LDAP 模拟器/模拟器

c# - LDAP 请求和响应是什么样的?

php - 在php中更改ISO日期时间格式

php - Twig Setting 在下拉菜单中选择选项

php - 关于 var_dump 输出的问题

error-handling - 错误处理 : Spring Integration

php - Yii:多事件最佳实践

php - 如何通过带有自增列的存储过程向表中插入数据

java - 在Java中检查输入是5、10、15、20、25还是30

java - 将 Ldap 组映射到 tomcat 中应用程序的角色