php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.10.2008, 16:11  
Benutzer
 
Registriert seit: 01.10.2008
Beiträge: 92
FRAD ist in Verruf geraten
Standard Frage zu LDAP Frage (Active Directory)

Hallo,

ich möchte gerne unsere AD mittels PHP auslesen... Ich habe auch schon eine Abfrage hinbekommen:

PHP-Code:
<?php

echo "<html><head>";
echo 
"<title>LDAP-Zugriff auf ein Active Directory</title>";
echo 
"</head><body>";

// *** Parameter für den LDAP-Zugriff ***
// Adresse des Domänencontrollers:
$ldap_server "ldap://192.168.10.5";
// Konto für den Zugriff:
$auth_user "LDAP@XXXXX.net";
$auth_pass "XXXXXXX";

// 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($connectLDAP_OPT_PROTOCOL_VERSION3);
ldap_set_option($connectLDAP_OPT_REFERRALS0);

// An Server binden:
if (!($bind=@ldap_bind($connect$auth_user$auth_pass))) {
    
    
   die(
"Bind fehlgeschlagen.");
}


// BaseDN festlegen:
$base_dn "OU=Angestellte,OU=TEST,DC=cf,DC=net";
// LDAP filter setzen: Nur Kontakt- und Benutzer-Objekte sollen zurückgegeben werden
$filter "(|(objectClass=contact)(objectClass=user))";

// Suche starten:
if (!($search=@ldap_search($connect,$base_dn,$filter))) {
     die(
"Durchsuchen des LDAP-Servers fehlgeschlagen.");
}
$anzahl ldap_count_entries($connect,$search);
print_r($anzahl);
// Ergebnis der Suche in der Variablen $info ablegen:
$info ldap_get_entries($connect$search);
//print_r($info);
// 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]["mail"][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"]        = erzeuge_abteilung($info[$i][dn]);
    
$ergebnis[$i]["abteilung"]        = $info[$i]["physicaldeliveryofficename"][0];
}

// Array alphabetisch sortieren, usort erwartet dazu eine Vergleichsfunktion:
usort($ergebnis'vergleich');

// Array $ergebnis in einer Tabelle ausgeben:
echo "<table border=0>";
for (
$i=0$i<$anzahl$i++) {
    echo 
"<tr>";
    echo 
"<td width=200>" $ergebnis[$i]["displayname"] . "</td>";
    echo 
"<td width=200>" $ergebnis[$i]["abteilung"] . "</td>";
    
/*
    if (empty($ergebnis[$i]["mail"]))
        echo "<td width=200> - </td>";
    else
        echo "<td width=200>    " . $ergebnis[$i]["mail"] . "</td>";
    */
    
if (empty($ergebnis[$i]["telephonenumber"]))
        echo 
"<td width=100> - </td>";
    else
        echo 
"<td width=100>" $ergebnis[$i]["telephonenumber"] . "</td>";
    echo 
"</tr>";
}
echo 
"</table>";

echo 
"</body></html>";




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($dn0$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($abteilung1);
    
// -> $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;
}

?>
Nun meine Frage, wie kann ich weitere OU´s mit einbinden?
Wie kann ich bestimmte Benutzer ausblenden?

Vielen Dank scon mal für eure Hilfe.

Grüße
FRAD ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Schnittstelle Active Directory zu Apache Webserver Datenbanken 5 21.04.2005 10:07
update auf php 5.0.4 robo47 Server, Hosting und Workstations 6 10.04.2005 19:00
[Erledigt] &quot;The directory you set for upload work cannot be reache PHP Tipps 2005 5 07.02.2005 12:19
Active Directory Ldap Queries über 1000 Entries PHP Tipps 2005 0 27.01.2005 14:27
Ldap :-( PHP-Fortgeschrittene 1 14.10.2004 15:36
Active Directory PHP-Fortgeschrittene 1 31.08.2004 20:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ldap filter, php ldap umlaute, ldap abteilung, ldap testen, ldap sortieren, $ergebnis[$i][\mail\] ldap php, ldap sortierung, ldap php umlaute, ldap php filter, ldap filter ou, ldap_bind umlaute, php active directory filter, ldap filter, php ldap sonderzeichen, ldap bind umlaute, ldap filter php, abteilung ldap, active directory ldap umlaute, ldap zugriff testen, ldap umlaute php

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:04 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum