【问题标题】:How can i manage an ldap_search() Operations error?如何管理 ldap_search() 操作错误?
【发布时间】:2019-04-15 13:58:24
【问题描述】:

我正在尝试使用 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 查询中收到“ldap_search(): Search: Operations error”消息。我在不同的论坛上搜索了一下,我看到了一些解决方案:设置 AD 的协议和引用,我在 LDAP 的设置部分完成了,我还看到有些人因为使用 DN 而收到此错误而不是他们想要达到的专有名称中的 DC,但这不是我的情况......

有人知道我的代码有什么问题吗?非常感谢。

【问题讨论】:

    标签: php active-directory ldap ldap-query active-directory-group


    【解决方案1】:

    Operations Error 表示操作顺序有误。 LDAP 是一种连接协议,这意味着您首先连接到它,然后在该连接上发出多个操作,第一个是 Bind 以验证用户身份。

    在您的代码中,您使用ldap_connect("XXX.XXX.XXX",389) 为每个操作创建一个新连接。执行此操作一次,将连接作为变量传递给所有其他调用,然后一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 2017-06-05
      相关资源
      最近更新 更多