7

私はここでLDAPを使用してすぐに使用できるので、これを完全に間違った方法で行っているかどうかを知らせてください。

私はbhLDAPAuthPluginプラグインを使用してSymfony1.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():検索:/...の検索フィルターが正しくありません検索クエリでエラーが発生しました

クエリを実行したとき。

最初の3つの「if」は、検索用の正しいパラメーターを取得していることを確認するためのものです。条件は実際の検索で失敗します。

助言がありますか?

アップデート

ユーザー名変数はjtestingです

$ usernameを関数から取得してから、検索パラメーターに入れました。実は(jtesting)です。括弧を削除して、問題が解決するかどうかを確認します。

4

1 に答える 1

7

フィルタのアサーション値で括弧を使用するには、括弧をエスケープする必要があります。アサーション値が存在する検索フィルターは、samAccountName=(jtesting)としてエンコードする必要がありますsamAccountName=\28jtesting\29。アサーション値全体は、エスケープされていない括弧で囲むことができます。その場合、フィルターはになり(samAccountName=\28jtesting\29)ます。

詳しくは

于 2012-07-24T00:30:07.367 に答える