一、安装依赖扩展
1、Ubuntu/Linux
只有一个PHP版本或在全局的PHP版本安装时
apt-get install php-ldap
Windows
参考评论区(未尝试):https://www.php.net/manual/en/ldap.installation.php
2、多版本时需要手动编译安装
二、编写代码
<?php
// 下面是定义ldap服务相关的变量
// dn是ldap中的数据目录结构
// $ldapSrv = "ldap://example.com"; //目标机器的域名
$ldapSrv = "ldap://127.0.0.1:389"; //目标机器的IP及端口
$dn = "cn=admin,dc=example,dc=com"; // 这里是使用管理员账号
$passwd = '123456';
$base_dn = "dc=example,dc=com"; // 搜索起始目录,这里使用根目录,如果数据库中存在同名,则应该指定更详细的起始目录
$ldapconn = ldap_connect($ldapSrv) or die("Could not connect to LDAP server.");
// 建立ldap服务连接方式二
// $host_name = '127.0.0.1';
// $port = 389;
// $ldapconn = ldap_connect($host_name, $port) or die("Could not connect to LDAP server.");
if ($ldapconn) {
echo '</br>';
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); // 指定协议版本,否则默认使用V2版本;
$ldapbind = ldap_bind($ldapconn, $dn, $passwd);// 开始绑定操作账号,之后的操作将默认使用该账户进行
// verify binding
if ($ldapbind) {
echo "LDAP bind successful...";
// 登录成功,尝试检索所有数据
$result = ldap_search($ldapconn,$base_dn, "(cn=*)") or die ("Error in search query: ".ldap_error($ldapconn));
$data = ldap_get_entries($ldapconn, $result);
// SHOW ALL DATA
echo '<h1>Dump all data</h1><pre>';
print_r($data);
echo '</pre>';
} else {
echo "LDAP bind failed...";
// 登录失败,获取登录或链接失败原因
// 在ldap_connect不会进行连接,仅校验格式是否正确,在ldap_bind时才进行第一次连接并登录
if (ldap_get_option($handle, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error)) {
echo "Error Binding to LDAP: $extended_error";
// 可能是协议版本等配置与LDAP服务端不一致;
} else {
echo "Error Binding to LDAP: No additional information is available.";
// 可能是IP和端口或者域名错误,或者是账号或密码错误;
}
}
}
?>