0

私は 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+telephone に他のエントリがあることは承知していますが、私の質問に適切に適合すると思われるエントリが見つかりませんでした。


編集:

LDAP マネージャーが、 telephonenumberを含む特定のフィールドへのアクセスを許可していないことがわかりました。私は許可について責任を負いません。承認を変更するために、システム管理者にリクエストを送信しました。問題を解決する必要があると思います。お知らせします。ありがとう。

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 に答える