LDAP搜索通过userid获取用户givenname

时间:2013-04-12 10:07:52

标签: php ldap

我在php脚本中成功运行了ldap_connect和ldap_bind命令。现在我需要通过用户ID获取g​​uvenName。我怎么能这样做。

$username = $_POST['username'];
$password = $_POST['password'];

define('LDAP_SERVER', 'localhost');
define('LDAP_PORT', 389);
define('LDAP_TOP', 'ou=people,dc=domain,dc=com');

$ds = ldap_connect(LDAP_SERVER, LDAP_PORT);
if (!$ds) {
    echo "FALSE";
}
if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
    @ldap_close($ds);
    echo "FALSE";
}
$dn = 'uid=' . $username . "," . LDAP_TOP;

if (!ldap_bind($ds, $dn, $password)) {
    echo "FALSE";
}

1 个答案:

答案 0 :(得分:1)

一般来说这很简单

public function getusercn($accountname)
{
     $filter_person = "(&(sAMAccountName={$accountname}))";
     $sr_person = ldap_search($this->ds_ad,$this->base_user_dn,$filter_person);
     $sr = ldap_get_entries($this->ds_ad, $sr_person);
     $attr = $sr[0]["givenName"][0];
     return $attr;
}

$ this-> ds_ad - 代码中的$ ds

$ this-> base_user_dn - 是您要搜索的基本OU(例如您的LDAP_TOP)

sAMAccountName - 您的案例中的“用户ID”属性

givenName - 属于你要找的属性

所有属性都已在$ sr变量中,因此您可以使用var_dump检查所有内容。