PHP und ldap

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

  • PHP und ldap

    Hallo Leute,
    erstmal: ich bin neu hier.

    dann auch schon zu meinem Problem:

    Hintergrund:
    - Ich möchte eine Website gestalten, die mir alle Benutzer (nur den Namen des Users) eines Active Directory auflistet (die einer bestimmten OU).
    Diese Liste soll aufgeteilt werden in Gesperrte und nicht Gesperrte User.
    - Wenn alles aufgelistet ist, soll Hinter dem Namen ein Link sein, mit dem man den Account sperren kann und wenn er gesperrt ist wieder entsperren.
    - Zudem soll noch ein Link hinter dem namen auftauchen, der das Passwort des Users auf ein Standard Passwort zurücksetzt.

    Grundquelltext:
    PHP-Code:
    <?php
    // Base DN bezeichnet die oberste OU unter der die User zu finden sind. 
    $basedn "ou=User,dc=test,dc=local";
    $server "ldap://192.168.178.11";

    // 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 "Administrator";
    $password "";

    $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=user)(objectCategory=person)(cn=*))";
    // $filter = "(&(|(objectClass=user)(objectClass=contact))(objectCategory=person)(cn=*))";
    $filter "(&(|(objectClass=user))(objectCategory=person)(cn=*))";

    // Verbindung zum AD herstellen
    $connectid ldap_connect($server);

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


    // AD auslesen
    $search ldap_search($connectid,$basedn$filter);
    $result ldap_get_entries($connectid,$search);

    // in $result sind nun alle User mit allen Informationen enthalten. 

    ?>
    leider bekomme ich bei ldap_serch folgende Fehlermeldung:
    Warning: ldap_search() [function.ldap-search]: Search: Operations error in C:\xampp\htdocs\index.php on line 27

    und bei ldap_get_entries:
    Warning: ldap_get_entries(): supplied argument is not a valid ldap result resource in C:\xampp\htdocs\index.php on line 28

    Stuktur meines AD's:
    domäne = test.local
    ou (wo die user drinstehen) = User
    die OU liegt direkt in der Domäne.

    Ich hoffe mir kann wer helfen.

    Mit freundlichen Grüßen

    Jared

  • #2
    Dein AD versteht die Query nicht. Benutze die ldap_err*-Funktionen!

    Kommentar


    • #3
      Hallo,

      die ldap_err* Function habe ich ausprobiert, allerdings sagt er mir jetzt das ich nen fehler im der error function habe? oO

      folgendes habe ich ausprobiert:

      ldap_error([COLOR=#000000][COLOR=#0000cc]$search[/COLOR][/COLOR]);
      ldap_error([COLOR=#000000][COLOR=#0000cc]ldap_search[/COLOR][COLOR=#006600]([/COLOR][COLOR=#0000cc]$connectid[/COLOR][COLOR=#006600],[/COLOR][COLOR=#0000cc]$basedn[/COLOR][COLOR=#006600], [/COLOR][COLOR=#0000cc]$filter[/COLOR][COLOR=#006600]));
      [/COLOR][/COLOR]ldap_error();

      leider ergab das auch kein Fehlertext, sondern nur, das ich ein Fehler in der Fehlerabfrage habe ^^

      hoffe einer kann mir weitehelfen :P

      //edit: oder muss in ldap_error noch die verbindungkennung rein, also ldap_error($connetid, $search); ?
      Zuletzt geändert von jared566; 20.11.2009, 18:04.

      Kommentar


      • #4
        PHP: ldap_error - Manual

        Kommentar


        • #5
          ja die function habe ich da ja auch gefunden, nur weiß ich nicht, wie die richtig eingesetzt wird... gegoogelt habe ich schon, aber entweder ich bin zu blöd zum googlen oder ich nutze nur die falschen suchbegriffen..

          Ein Beispiel, in dem ldap_error() richtig angewand wird, habe ich leider nicht gefunden...
          Höchstens ein Beispiel, in dem der error auf die $connectionid angewand wird, aber die connection habe ich ja schon abgefragt, und die ist true, also besteht eine verbindung...

          die errors beginnen erst ab $search bzw. $result (wobei ich denke das $result auf $search aufbaut, also daher der fehler, da $seach = false)

          Kommentar


          • #6
            PHP: ldap_search - Manual

            Beispiel für die Verwendung von ldap_error():
            PHP-Code:
            ldap_search($connection, ...) or die(ldap_error($connection)); 
            Zuletzt geändert von onemorenerd; 21.11.2009, 10:11.

            Kommentar


            • #7
              ok schonmal danke hab ich mal ausprobiert.

              allerdings bekomm ich eine Fehlermeldung zurück, die auch schon im vorherigen Fehler drin steht ^^: Operations error

              weiß jemand weiter?

              Kommentar


              • #8
                Hast du den Link in meinem letzten Beitrag besucht? Da hat jemand eine Lösung für ein Problem, was deinem sehr ähnlich ist.

                Kommentar


                • #9
                  hey nochmal danke =) hatte nicht auf den link geklickt, da ich schon des öfteren auf der seite war, mir aber nicht die usermeldungen anschaut habe :P

                  trotzdem hats auch damit nicht geklappt, aber ich weiß woran es lag.

                  der benutzername stand nur einfach da und kaum habe ich ein @test.local hintergehängt, lief es einwandfrei ^^

                  jetzt habe ich auch in einer schleife ALLE einträge ausgegeben bekommen. nur wie kann ich nur die anmelde, vor und nachname ausgeben? bzw wie sind die assoziative namen für die entsprechenden einträge? zusätzlich möchte ich auch noch ausgeben, ob der benutzer aktiv oder inaktiv ist.
                  das ganze möchte ich dann in eine function schreiben, dh. das ich nur die function aufrufe, und die mir dann name, vorname und anmelde name ausgibt, sowie nach activ und inaktiv sortiert

                  meine schleife:
                  PHP-Code:
                  for ($i=0$i<=$result["count"]; $i++) {
                  for (
                  $j=0$j<=$result[$i]["count"]; $j++) {
                  echo 
                  $result[$i][$j].": ".$result[$i][$result[$i][$j]][0]."<br>";
                  }} 
                  schonmal danke für die nette hilfe =)

                  Kommentar


                  • #10
                    hat sich geklärt habs herausgefunden ;-)

                    Kommentar

                    Lädt...
                    X