2016-05-03 42 views
0

我的问题是,当我尝试检索属性'userPassword'的值时,它不会工作我在PHP下工作,问题是该属性存在当我打开Phpldapadmin我可以看到它,但是当我尝试使用这个代码行,以检索它它不会工作OpenLdap不会检索用户密码

$sr = ldap_search($ds,"ou=people,dc=powerm,dc=com","uid=".$login); 
$data = ldap_get_entries($ds,$sr); 
$password = $data[0]["userpassword"][0]; 

$displayName = $data[0]["displayname"][0]; 
$num_tel =$data[0]["mobile"][0]; 
$mail =$data[0]["mail"][0] 

其他属性做工精细预期的userPassword

任何一个可以帮助?

谢谢。

回答

2

尝试指定要显式返回的属性。

$dn = 'ou=people,dc=powerm,dc=com'; 
$filter = 'uid=' . $login; 
$attrs = ['displayname', 'userpassword', 'mobile', 'mail']; 

$sr = ldap_search($ds, $dn, $filter, $attrs); 

该目录可能配置为不返回此安全敏感属性,除非您明确要求它。

也可能是该属性需要特殊权限才能访问它 - 您是否使用相同凭据连接到代码中的数据库,就像在phpLDAPAdmin中执行的操作一样?

服务器也可以配置为不返回密码,除非它是通过加密连接 - 使用传递给ldap_connect()ldaps:// URL或使用ldap_start_tls()发起的。

+0

哇。这家伙*真的*把努力放在这个答案。这必须是我最近在Stack Overflow上看到的最佳答案。如果我需要获得LDAP密码,我会完全使用这个答案,因为它很好,可以做所有的事情。 10/10会再次高举。 – PeeHaa

+0

使用你的代码时仍然有同样的问题,因为我说它显示了所有的属性期望的用户密码,我有同样的配置在服务器端作为我的同事,他可以检索userpassword和我我不能,所以我不能不认为这是一个配置问题 –