7

我刚开始使用 LDAP,所以如果我以完全错误的方式执行此操作,请告诉我。

我正在使用 bhLDAPAuthPlugin 插件使用 Symfony 1.4

我正在使用 LDAP 验证用户登录。但是,我想使用用户名查询 LDAP 表中的更多数据。所以我正在编写这个搜索功能来根据用户名过滤结果:

function user_values($username) {
if (!$username) {
    die ("Username is not there man!");
}

if (!$this->_conn) {
    die ("No Connection.");
}
if (!$this->_base_dn) {
    die ("No Base.");
}
$filter="samaccountname=".$username;

$attributes_ad = array("name");
$result = ldap_search($this->_conn, $this->_base_dn, $filter, $attributes_ad) 
or die ("Error in search query");
$entries = ldap_get_entries($this->_conn, $result);
    return($entries);
}

我收到错误消息:

警告:ldap_search(): Search: Bad search filter in /... 搜索查询错误

当我运行查询时。

前三个“如果”只是为了确保我获得了正确的搜索参数。该条件在实际搜索中失败。

有什么建议么?

更新

用户名变量是 jtesting

在将其放入搜索参数之前,我从函数中提取了 $username。它实际上是(jtesting)。我将删除括号,看看是否可以解决问题。

4

1 回答 1

7

为了在过滤器的断言值中使用括号,必须对括号进行转义。断言值所在的搜索过滤器samAccountName=(jtesting)应编码为samAccountName=\28jtesting\29. 整个断言值可能包含在未转义的括号中,在这种情况下,过滤器变为(samAccountName=\28jtesting\29).

更多信息

于 2012-07-24T00:30:07.367 回答