2024年PHP日本大会

ldap_get_option

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

ldap_get_option获取给定选项的当前值

描述

ldap_get_option(LDAP\Connection $ldap, int $option, array|string|int &$value = null): bool

value设置为指定选项的值。

返回值

成功时返回true,失败时返回false

变更日志

版本 描述
8.1.0 ldap参数现在期望一个LDAP\Connection实例;之前,期望一个有效的ldap link 资源

示例

示例 #1 检查协议版本

<?php
// $ds 是目录服务器的有效 LDAP\Connection 实例
if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version)) {
echo
"使用协议版本 $version\n";
} else {
echo
"无法确定协议版本\n";
}
?>

注释

注释:

仅当使用 OpenLDAP 2.x.x 或 Netscape Directory SDK x.x 时,此函数才可用。

参见

添加注释

用户贡献的注释 3 条注释

匿名用户
8 年前
接着 Jeremy S 的示例。
无需定义 LDAP_OPT_DIAGNOSTIC_MESSAGE 为 0x32 然后使用它,可以直接使用已定义为该值的选项 :)

LDAP_OPT_ERROR_STRING
Jeremy S
11 年前
以下是判断 Active Directory 用户帐户是否过期的方法

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 = '无法登录:密码已过期。';
}
Maarten
4 年前
PHP 7.1 添加了直接配置 LDAP CA/Cert 环境的支持,而不是依赖于环境变量。我注意到很多人在尝试使其工作时遇到问题。

正确的方法是
$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);
To Top