Andreas Korthaus: Internet Explorer sieht nach Formular leere Seite

Hallo!

Ich habe ein Problem mit dem Internet-Explorer (Version 6, WinXP, also nichts außergewöhnliches). Leider kann ich das selber nicht reproduzieren, sondern habe nur die Fehlerbeschreibung eines Anwenders, was die Sache leider etwas verkompliziert.

Es passiert folgendes:

Der Anwender füllt ein zwar etwas längeres, aber sonst stinknormales HTML-Formular aus. Unter dem Formular habe ich eine Grafik als Submit-Schaltfläche. Wenn diese betätigt wird, dann werden die Daten aus dem Formular per POST und multipart/form-data kodiert (2 optionale Upload-Felder vorhanden) an ein PHP-Script geschickt. Das Script verarbeitet die Daten, und schickt dann einen Location-Header (header('Location: http://...');exit;) zurück an den Browser, der diesen auf eine andere Seite weiterleitet. Die Daten werden in der Session gespeichert, so dass sie ggfs. noch verändert werden können. Die HTML-Ausgabe wird gzip-komprimiert(per php.ini), es wird kein SSL verwendet. Auf dem Server läuft Apache 1.3.31 mit mod_php 4.3.9 mit PECL::APC 2.0.4 (Opcode Cache).

Bei mir funktioniert das wunderbar, ich (und ca. 20 andere Leute) haben das Formular schon mehrere 100, wenn nicht sogar 1000 mal verwendet, mit allen möglichen OS/Browser Kombinationen. Ohne jegliches Problem.

Jetzt hat der Anwender folgendes Problem:

Er füllt das Formular fast vollständig aus, klickt auf die Submit-Grafik, und dann kommt er nicht auf die Seite, die er gemäß Location-Header eigentlich bekommen soll, sondern die Seite ist einfach leer/weiß. Wenn er im Browser zurück geht, ist das Formular leer. "Manchmal" sind die Daten auch wieder im Formular wenn er es dann erneut aufruft (wenn die Daten einmal auf dem Server angekommen sind, werden sie in die Session geschrieben, und bei jedem erneuten Aufruf dann im Formular vorbelegt).

Vom IE sind mir einige seltsamen Dinge bekannt, aber in diesem Fall habe ich keine Idee woran das liegen könnte, bzw. was da passiert und warum es nicht funktioniert.

In den Serverlogs lässt sich nicht sicher sagen was genau passiert ist, auf jeden Fall sind von diesem Anwender entsprechende POST-Requests gekommen, entsprechende 302-Header gesendet worden, und darauf entsprechende GET-Requests gesendet und korrekt vom Server beantwortet worden. Allerdings hat er es oft versucht, und es kann sein dass manchmal ein POST-Request fehlte. In jedem Fall wurde _wenn_ es einen POST-Request gab, immer korrekt vom Server geantwortet. Und die Seite die durch den location-Header dann per GET angefordert wurde, ist immer mit >1KB Inhalt ausgeliefert worden. Aber vielleicht hat der speziell auch ein Problem mit den Headern die PHP Dank Session, gzip... so in eine einfache 302-Antwort (Location-Header) schreibt, z.B.:

HTTP/1.1 302 Found
Date: Fri, 01 Oct 2004 14:49:32 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://www.example.com/new/location?
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

Hat vielleicht von Euch jemand sowas schonmal gehabt, oder ne Idee woran das liegen könnte?

Grüße
Andreas

--
SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
  1. Hallo Andreas

    Hat vielleicht von Euch jemand sowas schonmal gehabt, oder ne Idee woran das liegen könnte?

    Ja, solche Probleme treten besonders dann auf wenn man Abschnitte aus Word per Copy+Paste in ein Formular übernimmt.

    Hatte ein ähnliches Problem vor einger Zeit hier schon einmal gepostet.
    Habe das eben nochmal mit einem aktuellen IE unter XP probiert und es funktioniert immer noch nicht ;-)
    Vielleicht ist Dein Problem (resp. das des IE) ähnlich gelagert.

    http://www.maledivas.de/iebug/index.php

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hi lulu!

      Ja, solche Probleme treten besonders dann auf wenn man Abschnitte aus Word per Copy+Paste in ein Formular übernimmt.

      Hm, das kann gut sein dass jemand sowas macht. Aber was hat das konkret mit Word zu tun? Nur wegen den Sonderzeichen die darin vorkommen können?

      Hatte ein ähnliches Problem vor einger Zeit hier schon einmal gepostet.
      Habe das eben nochmal mit einem aktuellen IE unter XP probiert und es funktioniert immer noch nicht ;-)
      Vielleicht ist Dein Problem (resp. das des IE) ähnlich gelagert.

      http://www.maledivas.de/iebug/index.php

      Also bei mir funktioniert das eigentlich korrekt.  Ach, Firefox... Moment... hm, tatsächlich... interessant ;-)

      Aber leider glaube ich nicht, dass dies was mit meinem Problem zu tun hat. Denn selbst wenn irgendwelche Felder, ganz egal welche fehlen würden, solange ein gültiger POST-Request am Server ankommt, erzeugt das Script eine Ausgabe, bzw. einen Location-Header. Kann sein dass dann bei diesem Bug was fehlt, oder vielleicht wird man sogar ausgeloggt, aber es kommt niemals nie eine weiße Seite zurück. Ich sehe hier eigentlich 3 mögliche Kandidaten:

      1. IE-Problem (mein Tipp)
      2. PECL::APC(PHP Opcode Cache)
      3. IE verschluckt sich irgendwie am aufgeblähten 302-Header
      Mit 2. _kann_ sowas auch passieren. Allerdings sehe ich dafür überhaupt keine Anzeichen in meinen Logs, außerdem würde das Problem normalerweise nicht nur bei einem Anwender auftreten.

      Mit Headern hatte ich schon mehrfach Probleme mit IE, allerdings ist das so eine Allerwelts-Konfiguration, dass ich es mir eigentlich nicht vorstellen kann.

      Hm, evtl. lasse ich auf dem Server mal Ethereal mitlaufen, wenn ich am Telefon mit dem Anwender nochmal teste... mal sehen.

      Manche Probleme mit dem IE erledigen sich von selbst, wenn man gzip-Komprimierung weglässt.

      Sonst noch irgendwelche Ideen?

      Viele Grüße
      Andreas

      --
      SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
      1. Hallo.

        Ja, solche Probleme treten besonders dann auf wenn man Abschnitte aus Word per Copy+Paste in ein Formular übernimmt.
        Hm, das kann gut sein dass jemand sowas macht. Aber was hat das konkret mit Word zu tun? Nur wegen den Sonderzeichen die darin vorkommen können?

        Vielleich ist es ja ein besonders raffinierter Kopierschutz von Word.
        MfG, at