【发布时间】: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