php - LDAP 搜索通过用户 ID 获取用户给定名称

标签 php ldap

我已在我的 php 脚本中成功运行 ldap_connect 和 ldap_bind 命令。现在我需要通过用户 ID 获取 guvenName。我怎样才能做到这一点。

$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";
}

最佳答案

总的来说很简单

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 - 是您的案例 uid 中的“用户 id”属性

givenName - 是您要查找的属性

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

关于php - LDAP 搜索通过用户 ID 获取用户给定名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968567/

相关文章:

filter - 编写 LDAP 查询过滤器

java - 检查(使用 openDS SDK)成员属于 openDS LDAP 中的哪个组

PHP MYSQL 数组和排序

php - 对数据库执行计算

java - 通过 Java 到 LDAP 的 SSL 连接

ubuntu - Ubuntu 18.04 中的 GDM3 + LDAP

java - 查找 JNDI/LDAP 连接安全协议(protocol)

带有 __get() 魔术方法的 PHP stdClass()

php - 如何使用类型开关更改 PrestaShop 1.7 表单中的 css

php - 在 Woocommerce 中添加带有附加单选按钮的自定义支付网关