Seltsamer Effekt beim LDAP-Zugriff

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

  • Seltsamer Effekt beim LDAP-Zugriff

    Hallo Allerseits,

    Ich programmiere gerade eine Authentifizierungsroutine. Da die Userdaten auf dem LDAP Serverliegen, habe ich folgenden Testcode generiert:

    $f = fopen("test.txt","w");
    $ds = ldap_connect("ldap.intern.qsc.de");
    ldap_bind($ds);
    $abfr = ldap_list($ds,"ou=People,o=QSC AG,o=qsc.de","uid=*");
    $eintr = ldap_get_entries($ds, $abfr);
    for ($i=0; $i < $eintr["count"]; $i++) {
    print $eintr[$i]['uid'][0]."<br>";
    $UserId = $eintr[$i]['uid'][0];
    $Vorname = $eintr[$i]['givenname'][0];
    $Name = $eintr[$i]['sn'][0];
    $Email = $eintr[$i]['mail'][0];
    $Telefon = $eintr[$i]['telephonenumber'][0];
    $Gruppe = $eintr[$i]['qscres'][0];
    $zeile[$i] = "\"".$UserId."\";\"".$Name."\";\"".$Vorname."\";\"".$Email."\";\"".$Telefon."\";\"".$Gruppe."\"" ;
    fwrite($f,$zeile[$i]."\r\n");
    }
    ldap_close($ds);
    fclose($f);

    Der obige Code funktioniert einwandfrei. Sobald ich aber in der FOR-Schleife den print-Befehl herausnehme (z.B. durch //), zeigt mir der Durchlauf folgende Meldung an: "the document contained no data. Try again later, or contact the server's administrator."

    Das gleiche passiert, wenn der print-Befehl steht, aber die
    "uid" wird auf zum Beispiel "uid=f*" eingegrenzt.

    Auf Nachfrage beim Administrator konnte mir der auch nicht weiterhelfen. Daher frage ich hier an, ob vielleicht jemand dieses Phänomen kennt. Ich persönlich tippe auf einen PHP-Bug auf Gund der entsprechenden Konfiguration:

    Betriebssystem: SunOS admin2 5.6 Generic_105181-05 sun 4u sparc SUNW,Ultra-5_10 Nov 16 2000
    Webserver: Apache/1.3.14 Release API-Version 19990320
    LDAP RCS Version: $ld:ldap.c,v 1.62 2000/08/31

    Es ist natürlich schlecht, wenn ich den print-Befehl benutzen muss, um Überhaupt auf die Daten irgendwie zugreifen zu können.

    Für rasche Hilfe wäre ich unendlich dankbar
    MfG alias wufox

  • #2
    Es ist zwar keine wirkliche Lösung, aber die print()-Ausgabe kannst ja vorerst einfach mal ins Nichts schicken.

    $f = fopen("test.txt","w");
    $ds = ldap_connect("ldap.intern.qsc.de");
    ldap_bind($ds);
    $abfr = ldap_list($ds,"ou=People,o=QSC AG,o=qsc.de","uid=*");
    $eintr = ldap_get_entries($ds, $abfr);

    ob_start();

    for ($i=0; $i < $eintr["count"]; $i++) {
    print $eintr[$i]['uid'][0]."<br>";
    $UserId = $eintr[$i]['uid'][0];
    $Vorname = $eintr[$i]['givenname'][0];
    $Name = $eintr[$i]['sn'][0];
    $Email = $eintr[$i]['mail'][0];
    $Telefon = $eintr[$i]['telephonenumber'][0];
    $Gruppe = $eintr[$i]['qscres'][0];
    $zeile[$i] = "\"".$UserId."\";\"".$Name."\";\"".$Vorname."\";\"".$Email."\";\"".$Telefon."\";\"".$Gruppe."\"" ;
    fwrite($f,$zeile[$i]."\r\n");
    }

    ob_end_clean();

    ldap_close($ds);
    fclose($f);

    CAT Music Files

    Kommentar


    • #3
      1. Findest Du im Apache error log irgendwelche Auffälligkeiten im Zusammenhang mit diesem Fehler?

      2. Was passiert wenn Du Deinen print auskommentierst und darunter nur ein print " "; schreibst?

      // print $eintr[$i]['uid'][0]."<br>";
      print " ";

      Kommentar


      • #4
        Ich denke die Fehlermeldung wird durch den Code
        "204" , "No Content" generiert.
        Der Server hat die Anfrage erhalten, sendet jedoch keine Daten zurück. Gut verwendbar ist dieser Statuscode bei Verwendung in CGI-Scripts, die zwar etwas auf dem Server erledigen, aber keinen neuen HTML-Code an den aufrufenden Browser senden wollen. Aus Sicht des Anwenders bleibt der alte Bildschirminhalt bestehen.

        Kann ich davon ausgehen, daß Du mit Netscape Navigator arbeitest? Wie sieht dasselbe unter IExplorer aus?

        Kommentar


        • #5
          Den Gedanken mit den HTML-Code einfügen, hatte ich auch schon. Zu der oben genannten Routine habe ich dann am Anfang print("<html><body>"); und am Ende print("</body></html>"); eingefügt. Das Ergebnis blieb trotzdem das Gleiche.
          Tatsächlich handelt es sich um Netscape 4.7. Mit MSIE konnte ich noch nicht ausprobieren, da Netscape in der Firma als Standard eingeführt ist.
          Heute kann ich die hier gemachten Vorschläge nicht ausprobieren, sondern erst morgen. Aber möchte schon mal meinen Dank für die raschen Antworten audrücken.
          Mogen werde ich dann meine Erfahrungen dazu hier herein posten.
          MfG alias wufox

          Kommentar


          • #6
            Hallo Allerseits,

            Also ich glaube, jetzt habe ich das Problem gelöst. Zumindestens mit dieser Systemkonfiguration. Aber warum
            das so ist, ist mir im Grunde immer noch schleierhaft.

            Sobald ich den Befehl ldap_close($ds) ausblende funktioniert das Ganze wie erwartet. Übrigens ldap_unbind($ds) hat den selben Effekt. Danach besteht noch ein Unterschied zwischen MSIE (6.026) und Netscape (4.78). Bei Netscape muss ich noch
            ein PHP-Programm (z.B. per http-header) aufrufen. Bei MSIE brauche ich nichts zu machen. In beiden Fällen kommt keine Fehlermeldung mehr und die Ausführung wird regelgerecht erledigt, zum Beispiel die ausgewählten Daten in eine Datei schreiben.

            Nachträglich nochmals Vielen Dank. Erst durch die Antworten bin ich auf die richtige Idee gekommen.
            MfG alias wufox

            Kommentar

            Lädt...
            X