(PHP 4, PHP 5, PHP 7, PHP 8)
ldap_list — 単一階層の検索を行う
$ldap
,$base
,$filter
,$attributes
= [],$attributes_only
= 0,$sizelimit
= -1,$timelimit
= -1,$deref
= LDAP_DEREF_NEVER
,$controls
= null
指定したフィルタ 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];
}
?>