Как я могу управлять ошибкой операций ldap_search ()? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь использовать запрос LDAP, чтобы получить группы AD одного из моих подразделений, на данный момент я написал это:

<?php
    session_start();
//::::::::DEBUG::::::::\\
    //echo $_SESSION['login_session'];
    //echo "<br>";
    //echo $_SESSION['password_session'];
    //echo "<br>";
    //echo $_SESSION['AD_session'];
    //$_SESSION['AD_session']=ldap_conect(XXX.XXX.XXX,389) but i apparently cannot conserve this function in a $_SESSION var...
    //echo "<br>";
    //echo $_SESSION['DN_SESSION'];
    //"OU=XXX,DC=XXX,DC=XXX"
    //echo "<br>";
//::::::::DEBUG::::::::\\ 

//----------------------------------------------------------------------------------------------------

//::::::::SECURITY FUNCTION::::::::\\
    if (NULL!==($_SESSION['login_session']&&$_SESSION['password_session'])){
//::::::::SECURITY FUNCTION::::::::\\

//----------------------------------------------------------------------------------------------------

//::::::::VARIABLES::::::::\\
        $filter = "(CN=*)";
        $attr = array("OU","CN","DC");
//::::::::VARIABLES::::::::\\

//----------------------------------------------------------------------------------------------------

//::::::::LDAP's setting::::::::\\

        ldap_set_option(ldap_connect("XXX.XXX.XXX",389), LDAP_OPT_PROTOCOL_VERSION, 3);
        ldap_set_option(ldap_connect("XXX.XXX.XXX",389), LDAP_OPT_REFERRALS, 0);

//::::::::LDAP's setting::::::::\\

//----------------------------------------------------------------------------------------------------

//::::::::LDAP BIND::::::::\\

        ldap_bind(ldap_connect("XXX.XXX.XXX",389),"CN=".$_SESSION['login_session'].",OU=XXX,OU=XXX,DC=XXX,DC=XXX", $_SESSION['password_session']);

//::::::::LDAP BIND::::::::\\ 

//----------------------------------------------------------------------------------------------------

//::::::::REQUESTS VARIABLES::::::::\\      
        $result = ldap_search(ldap_connect("XXX.XXX.XXX",389),$_SESSION['DN_SESSION'], $filter, $attr);

        $rescount = ldap_count_entries(ldap_connect("XXX.XXX.XXX",389),$result);

        $data = ldap_get_entries(ldap_connect("XXX.XXX.XXX",389),$result);
//::::::::REQUESTS VARIABLES::::::::\\

//----------------------------------------------------------------------------------------------------

//::::::::RESULTS DISPLAY::::::::\\      
        echo '<pre>';

        foreach($data as $row) {

        print_r($row);

        }
//::::::::RESULTS DISPLAY::::::::\\

//----------------------------------------------------------------------------------------------------
    ?>

Функция привязки работает хорошо, и я 'используя действующего пользователя для запроса моих групп AD.Но я получаю сообщение «ldap_search (): Search: Operations error» в моем запросе ldap_search.Я некоторое время искал на разных форумах и видел некоторые решения: настройку протокола и направление AD, что я и сделал в части настройки моего LDAP, я также увидел, что некоторые люди получают эту ошибку, потому что они используют DNвместо DC в отличительном имени, которого они хотели достичь, но это не мой случай ...

Кто-то имеет представление о том, в чем проблема в моем коде?Большое спасибо.

1 Ответ

0 голосов
/ 17 апреля 2019

Operations Error означает, что произошла ошибка в последовательности операций. LDAP - это подключенный протокол, который означает, что вы сначала подключаетесь к нему, а затем выполняете несколько операций с этим подключением, первая из которых представляет собой Bind для аутентификации пользователя.

В вашем коде вы создаете новое соединение для каждой операции с ldap_connect("XXX.XXX.XXX",389). Сделайте это один раз, передайте соединение всем остальным вызовам как переменную, и все должно работать.

...