首页 > 解决方案 > PHP ldap_search 给出错误“错误的搜索过滤器”(-7)

问题描述

我在 PHP 中遇到了 ldap_search 的问题。下面的查询给出了 LDAP ERROR "-7" - Bad search filter。
代码片段:

...
$base_dn = "ou=Example GSM,dc=example,dc=com";
$search_filter = "(userPrincipalName=example\name.surname)";
$bind_attr = "userPrincipalName";
$result = @ldap_search($ldapconn, $base_dn, $search_filter, array("dn", $bind_attr));

你知道我做错了什么吗?

我正在使用 Microsoft AD 和 PHP 7.2.18 。

标签: phpldap

解决方案


我想\需要转义过滤器才能工作。

您应该能够通过使用这种方式来定义您的 search_filter 得到你想要的:

$search_filter = "(userPrincipalName=" . ldap_escape('example\name.surname', '', LDAP_ESCAPE_FILTER) . ")";

有关更多信息,请查看https://www.php.net/ldap_escape上的文档

还可以查看https://www.php.net/manual/en/function.ldap-escape.php#118127上的用户提供的注释,这似乎描述了您的确切问题


推荐阅读