Php 从LDAP检索所有结果

Php 从LDAP检索所有结果,php,ldap,Php,Ldap,我需要一种从Ldap检索所有用户列表的方法。我所需要的只是它们的名字,以便在页面中显示它们 这是我的ldap连接页面,用于检索有关一个用户的信息。我需要这个+所有用户的名字 代码: session_start(); 包括“includes/connect.php”; //设置ldap服务器 $ldapurl=“bpt.kme.intern”; //设置调试标志 $debug=true; //设置调试 如果($debug){ ldap_设置_选项(空,ldap_选项_调试_级别,7); } //连

我需要一种从Ldap检索所有用户列表的方法。我所需要的只是它们的名字,以便在页面中显示它们

这是我的ldap连接页面,用于检索有关一个用户的信息。我需要这个+所有用户的名字

代码:

session_start();
包括“includes/connect.php”;
//设置ldap服务器
$ldapurl=“bpt.kme.intern”;
//设置调试标志
$debug=true;
//设置调试
如果($debug){
ldap_设置_选项(空,ldap_选项_调试_级别,7);
}
//连接到ldap服务器
$ldapconn=ldap_connect($ldapurl)或die(“无法连接”);
$ldapuser=$_POST['email'];
$ldappass=$_POST['pass'];
$ldaptree=“OU=BPT\u用户,DC=BPT,DC=kme,DC=intern”;
echo$ldapuser;
echo$ldappass;
//绑定到ldap服务器
//echo“尝试与$ldapuser-$ldappass绑定\n”;
$ldapbind=@ldap\u bind($ldapconn,$ldapuser,$ldappass);
如果(!$ldapbind){
echo“无法绑定到服务器$ldapurl\n”;
回显“OpenLdap错误消息:”.ldap\u错误($ldapconn)。“\n”;
$erro=“登录时的护墙板”;
$\会话['erro']=$erro;
标题('location:index.php');
}
如果($ldapbind){
$result=ldap_search($ldapconn,$ldaptree,”(mail=“.ldapuser.”)或die(“搜索查询中的错误:”.ldap_Error($ldapconn));
//$data=ldap\u get\u条目($ldapconn,$result);
//显示所有数据
//echo“转储所有数据”;
//打印(数据);
//回声';
$entry=ldap\u first\u条目($ldapconn,$result);
//头衔
$title=ldap_get_值($ldapconn,$entry,“title”);
//经理
$manager=ldap_get_值($ldapconn,$entry,“manager”);
//ACC名称
$samaccountname=ldap\u get\u值($ldapconn,$entry,“samaccountname”);
//名字
$nome=ldap_get_值($ldapconn,$entry,“name”);
$\u会话['logged']=true;
$\会话['email']=$ldapuser;
$\会话['pass']=$ldappass;
$\会话['title']=$title;
$\会话['manager']=$manager;
$\会话['colab']=$samaccountname;
$\会话['nome']=$nome;
}

提前感谢

您正在寻找用于检索所有用户的正确LDAP筛选器。这取决于条目的外观-尝试找出它们的共同点。现在,我假设所有用户都有一个mail属性,并共享objectClass organizationalPerson。在这种情况下,检索所有条目,如下所示:

$result=ldap\u search($ldapconn,$ldaptree,”(&(mail=*)(objectClass=organizationalPerson)))或die(“搜索查询中的错误:”.ldap\u Error($ldapconn))


然后继续,就像你在例子中尝试的那样,或者使用
ldap\u next\u entry
方法。

我需要什么样的循环来回显所有结果?请注意,根据ldap中的用户数量和服务器配置,可能会限制返回的结果数量,而这些结果无法从客户端扩展。因此,您可能需要以较小的批量执行查询。
session_start();

include 'includes/connect.php';

// Set the ldap server
$ldapurl = "bpt.kme.intern";
// Set the debug flag
$debug = true;

// Set debugging
if ($debug) {
  ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
}

// connect to ldap server
$ldapconn = ldap_connect($ldapurl) or die ("Couldn't connect"); 


$ldapuser= $_POST['email'];
$ldappass= $_POST['pass'];
$ldaptree    = "OU=BPT_Users,DC=bpt,DC=kme,DC=intern";

echo $ldapuser;
echo $ldappass;


// binding to ldap server
//echo "Trying to bind with $ldapuser - $ldappass\n";
$ldapbind = @ldap_bind($ldapconn, $ldapuser, $ldappass);

if (!$ldapbind) {
echo "Unable to bind to server $ldapurl\n";
echo "OpenLdap error message: " . ldap_error($ldapconn) . "\n";
$erro = "Dados de Login Inválidos";
$_SESSION['erro']=$erro;
header('location:index.php');


}



if ($ldapbind) {


     $result = ldap_search($ldapconn,$ldaptree, "(mail=".$ldapuser.")") or die ("Error in search query: ".ldap_error($ldapconn));

     //$data = ldap_get_entries($ldapconn, $result);
      // SHOW ALL DATA
     //echo '<h1>Dump all data</h1><pre>';
    //print_r($data);   
     //echo '</pre>';

    $entry = ldap_first_entry($ldapconn, $result);
    //Title
    $title = ldap_get_values($ldapconn, $entry, "title");
    //Manager
    $manager = ldap_get_values($ldapconn, $entry, "manager");
    //ACC name
    $samaccountname = ldap_get_values($ldapconn, $entry, "samaccountname");
    //Name
    $nome = ldap_get_values($ldapconn, $entry, "name");


    $_SESSION['logged']=true;
    $_SESSION['email'] = $ldapuser;
    $_SESSION['pass'] = $ldappass;
    $_SESSION['title']=$title;
    $_SESSION['manager']=$manager;
    $_SESSION['colab']=$samaccountname;
    $_SESSION['nome']=$nome;


}