bayano
Goto Top

LDAP Abfrage mit PHP liefert nicht alle Datensätze zurück

Hallo,

ich frage in einem PHP-Script alle Benutzer des LDAP ab, allerdings werden mir nicht alle Datensätze zurückgegeben, sondern nur ca. 1000. Es sind allerdings ca. 2500 User.

Kann man diese Begrenzung irgendwie heraufsetzen? Ich habe schon in der PHP.ini geschaut, da gibt es keine Grenze.
Ich weiss auch nicht wo man es sonst festlegen könnte. Vielleicht weiss ja von euch jemand weiter.

MFG

Content-Key: 62382

Url: https://administrator.de/contentid/62382

Printed on: April 19, 2024 at 23:04 o'clock

Member: Dani
Dani Jun 26, 2007 at 14:26:33 (UTC)
Goto Top
Hi Bayano,
na dann lass uns auch bitte dein Script sehen. Vielleicht ist dort ein logische Fehler begraben. Kommt öfters vor, als man denke. Eine Grenze habe ich noch nicht feststellen können!
Wie fragen auch ca. 15000 Einträge ab und hatten noch keine Probleme.


Gruß
Dani
Member: Bayano
Bayano Jun 27, 2007 at 05:30:52 (UTC)
Goto Top
OK, Hier das Script:

<?php
                  // Base DN bezeichnet die oberste OU unter der die User zu finden sind. 
                  $basedn = "CN=Users,DC=domain,DC=de";  
                  $server = "server.domain.de";  
                  // 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 = "username";  
                  $password = "passwort";  
                  $ldap_port = "389";  
                  // LDAP Abfrage 
                  $filter = "(&(objectClass=user)(cn=*))";  
?>
<?php
                  // Verbindung zum AD herstellen
                  $connectid = @ldap_connect($server)or die("Keine Verbindung zum LDAP server möglich.");  
?>
<?php
                  // 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 beim Anmelden des Benutzers.");  
?>
<?php
                  // AD auslesen
                  $search = @ldap_search($connectid,$basedn,$filter);
                  $result = ldap_get_entries($connectid,$search);
?>
<?php
                  $anzahl = ldap_count_entries($connectid,$search);
                  for ($i=0; $i<$anzahl; $i++) {
                  
                  echo "User: " .$result[$i]["cn"]. "<p>";  
                  echo "dn: " .$result[$i]["dn"]. "<p>";  
                  
                  echo "Telefon: " .$result[$i]["telephonenumber"]. "<p>";  
                  echo "sAMAccountName: " .$result[$i]["samaccountname"]. "<p>";  
                                   
                  echo "Mail: " .$result[$i]["mail"]. "<p>";  
                  echo "Description: " .$result[$i]["description"]. "<p>";  
                  echo "------------------<p>";  
        
    }
echo "Ende <p>";  
?>
Member: BSG2000
BSG2000 Jul 10, 2007 at 06:18:37 (UTC)
Goto Top
Ich schreibe auch gerade an einer ähnlichen Geschichte. Wir wollen im Intranet den Login zu internen Seiten sparen, indem per LDAP der aktuell angemeldete User des Rechners ermittelt wird. Anmeldung erfolt im Übrigen über Samba Domain mit LDAP usw.

Gibt es da nen bestimmten Flag, oder die Möglichkeit anhand der IP den angemeldeten User zu ermitteln?

Bin leider noch LDAP Anfänger...
Member: Bayano
Bayano Jul 11, 2007 at 05:49:09 (UTC)
Goto Top
Ich glaube nicht, das das so ohne weiteres mit PHP funktioniert, da PHP ja Serverseitig abläuft. Ich habe den angemeldeten User schonmal mit VBScript in einer HTML-Seite ausgelesen, diese muss dann allerdings lokal auf den Rechner ausgeführt werden. Also nicht das was du haben willst.
Wenn jemand eine Lösung findet, würde es mich auch sehr interessieren.
Member: BSG2000
BSG2000 Jul 11, 2007 at 14:10:10 (UTC)
Goto Top
Danke für die Antwort.
Hatte gedacht ich frage lokal den angemeldeten User ab und gleiche dies mit der LDAP DB ab, bzw. schaue ich ob die IP oder MAC des angemeldeten Clienten in das LDAP Verzeichnis kommt. Vielleicht muss man dazu ein bissel Javascript einarbeiten, das hab ich noch nicht getestet, sollte aber funktionieren. Ein Script dazu hab ich bereits gesehen.
Ich hab leider im Moment einen Bind Fehler (Protokoll Fehler...) bei Ausführung von ldap_bind. Ich komm da schon seit Tagen nicht mehr richtig weiter. Naja, weitere Antworten würden uns/mich nat. freuen.
Member: Bayano
Bayano Jul 12, 2007 at 06:28:19 (UTC)
Goto Top
Hast du in der PHP.ini LDAP freigeschaltet (ich meine die Zeile extension=php_ldap.dll, dort das Semikolon wegnehmen). Weil ansonsten geht das nicht.
Member: BSG2000
BSG2000 Jul 12, 2007 at 19:42:08 (UTC)
Goto Top
Ja, aber leider habe ich zum WebServer keinen direkten Kontakt, werde aber morgen mal mit den SysAdmin sprechen. LDAP Admin geht aber auch, daher...

Das Problem liegt sicher woanders. Ich werd vielleicht mal die Scripte posten. Evtl. sieht ja jemand den Fehler.
Member: Dani
Dani Jul 13, 2007 at 14:53:35 (UTC)
Goto Top
Hi Jungs, Mädels,
ihr habt doch sicher einen phpMyAdmin auf dem Server am laufen? Da gibt es eine Datei http://server/phpmyadmin/phpinfo.php. Dort werden alle Info's angezeigt. Sucht dort einfach mal nach dem Usernamen mit dem ihr gerade angemeldet seit (am Besten Domänenuser).


Grüße
Dani