0

我正在使用 LDAP,出于某种奇怪的原因,我能够通过 PHP 恢复所有条目,但我无法获取phonenumber。它表现得好像是空的,但显然不是。

以下是相关代码:

$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 新手,适用于其他领域的方法似乎不适用于phonenumber。我知道 LDAP+电话上还有其他条目,但我没有找到一个似乎适合我的问题的条目。


编辑:

我发现 LDAP 管理器不允许访问某些字段,包括电话号码。我不对授权负责。我向系统管理员发送了一个请求以更改授权。我认为它应该可以解决问题。我会及时向大家发布。谢谢。

4

1 回答 1

0

正在设置的数组项和具有值的数组项之间存在差异。

例如:

$array['test'] = "";
if (!isset($array['test'])) //false
if (empty($array['test'])) //true

我想你的 LDAP 服务器总是返回一个电话号码,不管是否有值。

你可以使用

if (empty($entry['telephonenumber'])) continue;

反而?

尝试var_dump($entry['telephonenumber'])查看输出以查看$entry设置的内容

于 2013-01-29T14:59:59.143 回答