Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu LDAP Frage (Active Directory)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
Lädt...
X