"; echo "LDAP-Zugriff auf ein Active Directory"; echo ""; // *** Parameter für den LDAP-Zugriff *** // Adresse des Domänencontrollers: $ldap_server = "ldap://10.11.35.1"; // Konto für den Zugriff: $auth_user = "condecco@dms01.local"; $auth_pass = "Kx32?t21qay"; // Mit Server verbinden: if (!($connect=@ldap_connect($ldap_server))) { die("Keine Verbindung zum Verzeichnis-Server möglich."); } // Diese Parameter sind nötig für den Zugriff auf ein Active Directory: ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($connect, LDAP_OPT_REFERRALS, 0); // An Server binden: if (!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) { die("Bind fehlgeschlagen."); } $person="Christ"; //$dn = utf8_encode( "OU=Technik,OU=Münster,OU=Mitarbeiter,DC=DMS01,DC=local"); $dn = utf8_encode( "DC=DMS01,DC=local"); $filter="(CN=calbers)"; $justthese = array( "ou", "sn", "cn", "givenName", "mail", "vorname", "memberOf", "badPasswordTime"); $sr=ldap_search($connect, $dn, $filter, $justthese); ldap_get_option($connect,LDAP_OPT_ERROR_STRING,$error); echo $error; $info = ldap_get_entries($connect, $sr); print $info["count"]." gefundene Einträge

"; echo "name: ".$info[ 0 ][ "sn" ][ 0 ]."
"; echo "benutzer_anmeldename: ".$info[ 0 ][ "cn" ][ 0 ]."
"; echo "vorname: ".$info[ 0 ][ "givenname" ][ 0 ]."
"; echo "Email: ".$info[ 0 ][ "mail" ][ 0 ]."
"; foreach( $info[ 0 ][ "memberof" ] as $key=>$element ) { if ( is_int( $key) ) { echo "schluessel: ".$key." gruppe: ".$element."
"; } } echo "


"; var_dump( $info ); //var_dump( $info ); /* foreach( $info as $key=>$element ) { if ( is_array( $element ) ) { foreach( $element as $key_2=>$element_2 ) { if ( is_array( $element_2 ) ) { foreach( $element_2 as $key_3=>$element_3 ) { echo "===>".$key_3."|".$element_3."<===
"; } } else { echo "==>".$key_2."|".$element_2."<==
"; } } } else { echo "=>".$key."|".$element."<=
"; } } */ $username = "calbers"; $passwort = "Lichterc!"; echo "Versuch"; //echo checkNTUser ($username,$passwort); echo "fertig"; /* // BaseDN festlegen: $base_dn = "OU=Vertrieb,DC=dms01,DC=local"; //$base_dn = ""; // LDAP filter setzen: Nur Kontakt- und Benutzer-Objekte sollen zurückgegeben werden //$filter = "(|(objectClass=contact)(objectClass=user))"; $filter = "uid=*"; // Suche starten: if (!($search=@ldap_search($connect,$base_dn,$filter))) { ldap_get_option($connect,LDAP_OPT_ERROR_STRING,$error); echo $error; die("Durchsuchen des LDAP-Servers fehlgeschlagen."); } */ $sr=ldap_search($connect, $dn, $filter, $justthese); $anzahl = ldap_count_entries($connect,$sr); // Ergebnis der Suche in der Variablen $info ablegen: $info = ldap_get_entries($connect, $sr); // Nur die relevanten Teile des $info-Arrays in ein $ergebnis-Array übernehmen: // (Verbessert die Übersichtlichkeit) // Hinweis: utf8_decode dekodiert Umlaute richtig. for ($i=0; $i<$anzahl; $i++) { $ergebnis[$i]["objectclass"] = $info[$i]["objectclass"][3]; $ergebnis[$i]["displayname"] = utf8_decode($info[$i]["displayname"][0]); $ergebnis[$i]["givenname"] = utf8_decode($info[$i]["givenname"][0]); $ergebnis[$i]["sn"] = utf8_decode($info[$i]["sn"][0]); $ergebnis[$i]["mail"] = $info[$i]["memberOf"][0]; $ergebnis[$i]["telephonenumber"]= $info[$i]["telephonenumber"][0]; // Der distinguishedName, also z.B. CN=blub,OU=...,DC=test,DC=local // soll dazu verwendet werden, aus den OU-Angaben die Abteilung // zu erzeugen: $ergebnis[$i]["abteilung"] = utf8_decode( erzeuge_abteilung($info[$i][dn]) ); } // Array alphabetisch sortieren, usort erwartet dazu eine Vergleichsfunktion: //usort($ergebnis, 'vergleich'); // Array $ergebnis in einer Tabelle ausgeben: echo ""; for ($i=0; $i<$anzahl; $i++) { echo ""; echo ""; echo ""; /* if (empty($ergebnis[$i]["mail"])) echo ""; else echo ""; */ if (empty($ergebnis[$i]["telephonenumber"])) echo ""; else echo ""; echo ""; } echo "
displayname" . $ergebnis[$i]["displayname"] . "abteilung " . $ergebnis[$i]["abteilung"] . " - " . $ergebnis[$i]["mail"] . " - telefon" . $ergebnis[$i]["telephonenumber"] . "
"; echo ""; function erzeuge_abteilung ($dn) { // $dn ist z.B.: CN=blub,OU=Nord,OU=Verkauf,OU=Benutzer,DC=test,DC=local $pos = strpos($dn, ',DC='); $dn = substr($dn, 0, $pos); // -> $dn: CN=blub,OU=Nord,OU=Verkauf,OU=Benutzer $pos = strpos($dn, ',OU='); $dn = substr($dn, $pos); // -> $dn: ,OU=Nord,OU=Verkauf,OU=Benutzer $abteilung = ""; $abteilungen = explode(',OU=', $dn); // -> $abteilungen: Nord, Verkauf, Benutzer for ($j = count($abteilungen)-1; $j > 0; $j--) { $abteilung = $abteilung . "-" . $abteilungen[$j]; } // -> $abteilung: - Benutzer - Verkauf - Nord $abteilung = substr($abteilung, 1); // -> $abteilung: Benutzer - Verkauf - Nord return $abteilung; } function vergleich($wert_a, $wert_b) { // Sortierung nach dem displayname $a = $wert_a["displayname"]; $b = $wert_b["displayname"]; if ($a == $b) { return 0; } return ($a < $b) ? -1 : +1; } ?>