我正在使用LDAP,由于一些奇怪的原因,我能够通过PHP恢复所有条目,但我无法获得 telephonenumber 。如果它是空的,它就像它一样,但显然不是。
以下是相关代码:
$ds = ldap_connect($LDAP_SERVER);
$sr = ldap_search($ds, $LDAP_PEOPLE, "(|(cn=*$search*)(sn=*$search*)(gn=*$search*)(uid=*$search*)(mail=*$search*))", array('uid', 'sn', 'givenname', 'mail', 'telephoneNumber', 'o') );
ldap_sort($ds, $sr, $_GET['tri']);
foreach ($entries as $entry) {
if (! isset($entry['uid'])) continue;
$uid = $entry['uid'][0];
$telnum = $entry['telephoneNumber'][0];
if (! isset($entry['telephonenumber'])) continue; //THIS IS EVALUATED AS TRUE
...
}
如果错误以某种方式显而易见,请原谅我。我已经在这几个小时工作了但是我是LDAP新手,对其他领域有用的东西似乎不适用于 telephonenumber 。我知道在LDAP +电话上还有其他条目,但我找不到一个似乎适合我的问题。
编辑:
我发现LDAP管理器不允许访问某些字段,包括 telephonenumber 。我不负责授权。我向sysadmin发送了一个请求以更改授权。我认为应该解决这个问题。我会及时向大家发布。感谢。
答案 0 :(得分:0)
正在设置的数组项和具有值的数组项之间存在差异。
例如:
$array['test'] = "";
if (!isset($array['test'])) //false
if (empty($array['test'])) //true
我想你的LDAP服务器总是会返回一个电话号码,无论是否有值。
您可以使用
if (empty($entry['telephonenumber'])) continue;
相反?
尝试var_dump($entry['telephonenumber'])
并查看输出以查看$entry
设置为