PHPのお勉強!

PHP TOP

ldap_list

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_list単一階層の検索を行う

説明

ldap_list(
    LDAP\Connection|array $ldap,
    array|string $base,
    array|string $filter,
    array $attributes = [],
    int $attributes_only = 0,
    int $sizelimit = -1,
    int $timelimit = -1,
    int $deref = LDAP_DEREF_NEVER,
    ?array $controls = null
): LDAP\Result|array|false

指定したフィルタ filter を使用し、スコープ LDAP_SCOPE_ONELEVEL でディレクトリを検索します。

LDAP_SCOPE_ONELEVEL は、コール時に指定した base の直下の階層から検索した結果のみを返すことを表します ("ls" と入力して、現在の作業ディレクトリのファイル/フォルダ 一覧を取得するのと同じようなものです)。

並列検索も可能です。並列検索を行うには、単一の LDAP\Connection のインスタンスではなく、それの配列を使用します。同じベース DN を使用したくない場合や全ての検索について同じフィルタを使用したくない場合、ベース DN の配列またはフィルタの配列を使用することが可能です。これらの配列は、LDAP\Connection の配列と同じ大きさである必要があります。これは、その配列の最初が一回の検索で使用され、2 番目のエントリが他の検索で使用されるといったようになるからです。並列検索を実行する際、エラーの場合を除き、LDAP\Result の配列が返されます。エラーの場合は、返される値は false になります。

パラメータ

ldap

ldap_connect() が返す LDAP\Connection クラスのインスタンス。

base

ディレクトリのベース DN。

filter

attributes

必要な属性を、 array("mail", "sn", "cn") のような通常の PHP 文字列配列で保持します。 "dn" は要求された属性の型によらず常に返されることに注意してください。

このパラメータを使用すると、デフォルトの動作よりもかなり効率的になります (デフォルトでは、すべての属性とその値を返します)。 したがって、これを使用することを推奨します。

attributes_only

属性の型のみを取得したい場合は 1 を設定します。 属性の型および値の両方を取得したい場合は 0 を設定します (これがデフォルトの挙動です)。

sizelimit

取得するエントリ数の制限を設定します。 0 は無制限であることを表します。

注意:

このパラメータは、サーバー側で事前に設定されている sizelimit を上書きすることはできません。それ以下の値を指定することはできます。

ディレクトリサーバーのホストによっては、 事前に設定された数以上のエントリを返さないようになっているものもあります。 この場合、サーバーでは、それが結果セットのすべてではないことを通知します。 このパラメータでエントリ数を制限した場合にも、同じことが起こります。

timelimit

検索に要する最大秒数を設定します。 これを 0 にすると無制限であることを表します。

注意:

このパラメータは、サーバー側で事前に設定されている timelimit を上書きすることはできません。それ以下の値を指定することはできます。

deref

検索時のエイリアスの扱いについて指定します。 以下のいずれかとなります。

  • LDAP_DEREF_NEVER - (デフォルト) エイリアスは参照されません。
  • LDAP_DEREF_SEARCHING - エイリアスを参照しますが、検索のベースオブジェクト上にいるときは参照しません。
  • LDAP_DEREF_FINDING - エイリアスの参照は、ベースオブジェクト上にいて検索中でない場合に行われます。
  • LDAP_DEREF_ALWAYS - エイリアスを常に参照します。

controls

リクエストと一緒に送信する LDAP コントロール の配列

戻り値

LDAP\Result のインスタンスか、LDAP\Result のインスタンスの配列を返します。失敗した場合に false を返します

変更履歴

バージョン 説明
8.1.0 引数 ldap は、LDAP\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な ldap link リソース を期待していました。
8.1.0 LDAP\Result クラスのインスタンスを返すようになりました。 これより前のバージョンでは、リソース を返していました。
8.0.0 controls は、nullable になりました。 これより前のバージョンでは、デフォルト値が [] でした。
7.3.0 controls のサポートが追加されました。

例1 ある組織の全ての組織単位を一覧表示する

<?php
// $ds はディレクトリサーバーの有効な LDAP\Connection のインスタンス

$basedn = "o=My Company, c=US";
$justthese = array("ou");

$sr = ldap_list($ds, $basedn, "ou=*", $justthese);

$info = ldap_get_entries($ds, $sr);

for (
$i=0; $i < $info["count"]; $i++) {
echo
$info[$i]["ou"][0];
}
?>

参考

add a note

User Contributed Notes

There are no user contributed notes for this page.