【问题标题】:How to get the full name from LDAP using PHP如何使用 PHP 从 LDAP 获取全名
【发布时间】:2018-02-23 20:21:24
【问题描述】:

我试图在使用 PHP 从 LDAP 登录后获取用户的全名。我成功连接到 LDAP,但根据用户名获取全名仍然无法正常工作。

这是我的代码

 <?php 
$username = '*****';
$password = '*****';
$account_suffix = '@*****.com';
$hostname = '**.**.*.***';


$ldap = ldap_connect($hostname);
if ($bind = ldap_bind($ldap,$username . $account_suffix, $password)) {
  echo "success";
  if ($bind) {
        $filter="(sAMAccountName=$username)";
        $result = ldap_search($ldap,"dc=****,dc=com",$filter);
        ldap_sort($ldap,$result,"sn");
        $info = ldap_get_entries($ldap, $result);
        for ($i=0; $i<$info["count"]; $i++)
        {
            if($info['count'] > 1)
                break;
            echo "<p>You are accessing <strong> ". $info[$i]["sn"][0] .", " . $info[$i]["givenname"][0] ."</strong><br /> (" . $info[$i]["samaccountname"][0] .")</p>\n";
            echo '<pre>';
            var_dump($info);
            echo '</pre>';
            $userDn = $info[$i]["distinguishedname"][0]; 
        }
        @ldap_close($ldap);
    }
} else {
  echo "failed";
}
?> 

任何建议请我错过了什么?谢谢。

【问题讨论】:

  • idownvotedbecau.se/nodebugging。在代码中添加一堆调试打印或 var_dump。每行一一检查。前任。 $result, $info, $info["count"], $userDn, ...您确实使用了var_dump($info),这没有帮助吗?它可以帮助我们看看你得到了什么。可能只是 $info[$i]["sn"][0] 没有正确引用,我们需要查看我们的 var_dump 才能知道。

标签: php active-directory ldap


【解决方案1】:

打开与 Active Directory 的连接时,您需要设置几个选项以确保链接正常运行,如下所示:

...
$ldap = ldap_connect($hostname);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
if ($bind = ldap_bind($ldap,$username . $account_suffix, $password)) {
...

【讨论】:

  • @JuniorDeveloper 对此答案有何回应?它解决了你的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多