我如何处理 ldap_search() 操作错误?
How can i manage an ldap_search() Operations error?
我正在尝试使用 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,但这不是我的情况...
有人知道我的代码有什么问题吗?非常感谢。
Operations Error
表示操作顺序有误。
LDAP 是一种连接协议,这意味着您首先连接到它,然后在该连接上发出多个操作,第一个是 Bind 以验证用户。
在您的代码中,您正在为使用 ldap_connect("XXX.XXX.XXX",389)
的每个操作创建一个新连接。这样做一次,将连接作为变量传递给所有其他调用,事情应该会起作用。
我正在尝试使用 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,但这不是我的情况...
有人知道我的代码有什么问题吗?非常感谢。
Operations Error
表示操作顺序有误。
LDAP 是一种连接协议,这意味着您首先连接到它,然后在该连接上发出多个操作,第一个是 Bind 以验证用户。
在您的代码中,您正在为使用 ldap_connect("XXX.XXX.XXX",389)
的每个操作创建一个新连接。这样做一次,将连接作为变量传递给所有其他调用,事情应该会起作用。