Користење на PHP LDAP повици
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Користење на PHP LDAP повици
Референца за `ldap.controls.php` со подобрена типографија и навигација.
Користење на PHP LDAP повици
Контролите се специјални објекти кои може да се испратат заедно со LDAP барање за да се промени однесувањето на LDAP серверот при извршување на барањето. Може да има и контроли испратени од серверот заедно со одговорот за да се обезбедат повеќе информации, обично за да се одговори на контролен објект од барањето.
Забелешка:
Не сите контроли се поддржани од сите LDAP сервери. За да знаете кои контроли се поддржани од сервер, треба да го прашате root DSE со читање на празен dn со филтерот (objectClass=*).
Пример #1 Тестирање на поддршката за контрола на пагинирани резултати
<?php
// $ds is a valid link identifier for a directory server
$result = ldap_read($ds, '', '(objectClass=*)', ['supportedControl']);
if (!in_array(LDAP_CONTROL_PAGEDRESULTS, ldap_get_entries($ds, $result)[0]['supportedcontrol'])) {
die("This server does not support paged result control");
}
?>
Од PHP 7.3, може да испраќате контроли со вашето барање во сите функции за барање користејќи го controls параметарот. Кога постои екстензија верзија на функцијата, треба да ја користите ако сакате да добиете пристап до целосниот објект за одговор и да можете да ги парсирате контролите за одговор од него користејќи ldap_parse_result().
controls мора да биде низа која содржи низа за секоја контрола што треба да се испрати, содржејќи ги следните клучеви:
- oid (string)
- OID на контролата. Треба да користите константи што започнуваат со LDAP_CONTROL_ за ова. Погледнете LDAP Константи.
- iscritical (bool)
-
Ако една контрола е означена како критична, барањето ќе пропадне ако контролата не е поддржана од серверот, или ако не успее да се примени. Имајте предвид дека некои контроли секогаш треба да бидат означени како критични како што е наведено во RFC што ги воведува. Стандардно е
false. - value (mixed)
- Ако е применливо, вредноста на контролата. Прочитајте подолу за повеќе информации.
Повеќето вредности на контролите се испраќаат до серверот кодирани во BER. Може или вие самите да ја кодирате вредноста во BER, или наместо тоа може да поминете низа со точните клучеви за да се изврши кодирањето за вас. Поддржаните контроли што се поминуваат како низа се:
-
LDAP_CONTROL_PAGEDRESULTSОчекувани клучеви се [size] и [cookie] -
LDAP_CONTROL_ASSERTОчекуван клучен филтер -
LDAP_CONTROL_VALUESRETURNFILTERОчекуван клучен филтер -
LDAP_CONTROL_PRE_READОчекувани клучеви се attrs -
LDAP_CONTROL_POST_READОчекувани клучеви се attrs -
LDAP_CONTROL_SORTREQUESTОчекува низа од низи со клучеви attr, [oid], [reverse]. -
LDAP_CONTROL_VLVREQUESTОчекувани клучеви се before, after, attrvalue|(offset, count), [context]
Следниве контроли не бараат никаква вредност:
The control LDAP_CONTROL_PROXY_AUTHZ Контролата
е посебен случај бидејќи не се очекува нејзината вредност да биде BER-кодирана, така што можете директно да користите стринг за нејзината вредност. ldap_parse_result()Кога контролите се парсираат од
-
LDAP_CONTROL_PASSWORDPOLICYRESPONSE, вредностите се претвораат во низа ако се поддржани. Ова е поддржано за: -
LDAP_CONTROL_PAGEDRESULTSКлучевите се expire, grace, [error] -
LDAP_CONTROL_PRE_READКлучевите се size, cookie -
LDAP_CONTROL_POST_READКлучевите се size, cookie -
LDAP_CONTROL_SORTRESPONSEКлучевите се dn и имиња на LDAP атрибути -
LDAP_CONTROL_VLVRESPONSEКлучевите се errcode, [attribute]