<?php


// Base DN bezeichnet die oberste OU unter der die User zu finden sind. 
$basedn = "ou=OUHochschulnetzwerk,dc=hsnet,dc=hs-ludwigsburg,dc=de";
$server = "localhost";

// da der Zugriff auch ohne Anmeldung möglich sein soll, hab ich einen extra User im AD angelegt, um mich mit dem Server zu verbinden.

$username = "cn=LDAPqueryUser,dc=hsnet,dc=hs-ludwigsburg,dc=de";
$password = "ldHS332";


$ldap_port = "389";

// LDAP Abfrage 
// ich hab einen erweiterten Filter genommen, da ich nicht nur die User des AD haben wollte, sondern auch Kontakteinträge.
 $filter = "(&(objectclass=person)(cn=*)(sAMAccountName=*))";
//$filter = "(&(|(objectClass=user)(objectClass=contact))(objectCategory=person)(cn=*))";

// Verbindung zum AD herstellen
$ds = @ldap_connect($server, $ldap_port);
  if($ds){
   echo "ds Erfolgreich<br>";
  }else{
   echo "ds Nicht erfolgreich<br>";
  }

// Ihr könnt dies auch nutzen, um z.B. Usernamen und Passwort z.B. fürs Intranet zu verifizieren.
$binding = ldap_bind($ds,$username,$password) or die("Fehler");

  if($binding){
   echo "binding Erfolgreich<br>";
  }else{
   echo "binding Nicht erfolgreich<br>";
  }

// AD auslesen
$sr = ldap_search($ds,$basedn,$filter);
$result = ldap_get_entries($ds,$sr);
$anzahl = ldap_count_entries($ds, $sr);

  if($sr){
   echo "search Erfolgreich<br>";
  }else{
   echo "search Nicht erfolgreich<br>";
  }


  if($result){
   echo "result Erfolgreich<br>";
  }else{
   echo "result Nicht erfolgreich<br>";
  }

// in $result sind nun alle User mit allen Informationen enthalten.
echo "<pre>";


for($i=0;$i<$anzahl;$i++){
  $vorname           = $result[$i]['givenname'][0];
  $nachname          = $result[$i]['sn'][0];
  $uid               = $result[$i]['samaccountname'][0];
  echo "$vorname $nachname -> $uid<br>";
}
print_r($result);

echo "</pre>";
?>
