Following on from Jeremy S's example.
Instead of defining LDAP_OPT_DIAGNOSTIC_MESSAGE as 0x32 then using it, you can just use the option already defined as that value :)
LDAP_OPT_ERROR_STRINGldap_get_option
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ldap_get_option
Референца за `function.ldap-get-option.php` со подобрена типографија и навигација.
ldap_get_option
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ldap_get_option — Земи ја моменталната вредност за дадената опција
= NULL
Постави value на вредноста на наведената опција.
Параметри
ldap-
Или LDAP\Connection инстанца, вратена од ldap_connect(), за да ја добиете опцијата за таа врска, или
nullза да ја добиете глобалната опција. option-
за да ја поставите опцијата глобално.
optionПараметарот value-
Ова ќе биде поставено на вредноста на опцијата.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.5.0 |
ldap сега е null.
|
| 8.1.0 |
На ldap параметарот очекува LDAP\Connection
инстанца сега; претходно, валидна ldap link resource се очекуваше.
|
Примери
Пример #1 Провери ја верзијата на протоколот
<?php
// $ds is a valid LDAP\Connection instance for a directory server
if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version)) {
echo "Using protocol version $version\n";
} else {
echo "Unable to determine protocol version\n";
}
?>Белешки
Забелешка:
Оваа функција е достапна само кога се користи OpenLDAP 2.x.x ИЛИ Netscape Directory SDK x.x.
Белешки од корисници 3 белешки
Here is how to tell if an Active Directory user account expired:
define('LDAP_OPT_DIAGNOSTIC_MESSAGE', 0x0032);
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($conn, $user, $pass);
ldap_get_option($conn, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error);
if (!empty($extended_error))
{
$errno = explode(',', $extended_error)[2];
$errno = explode(' ', $errno)[2];
$errno = intval($errno);
if ($errno == 532)
$err = 'Unable to login: Password expired.';
}PHP 7.1 added support for configuring the LDAP CA/Cert environment directly, rather than relying on the environment variables. I noticed that a lot of people are having trouble getting this to work.
The correct way is:
$ds=ldap_connect("ldap.google.com");
ldap_set_option(NULL, LDAP_OPT_X_TLS_CERTFILE, "/path/file.crt");
ldap_set_option(NULL, LDAP_OPT_X_TLS_KEYFILE, "/path/file.key");
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_start_tls($ds);
...
ldap_close($ds);