Hallo!
<form id="frmArtEdit" enctype="multipart/form-data" method="post" action="artedit_art.php">
Die Sau ist grob gesagt der enctype. Der Effekt tritt erst ab 4.2.0 auf,
Ah, welcher ist denn genau falsch, und welcher richtig, und wieso habe ich das bisher ausschließlich auf einem System mit winXP und IE6 beobachtet? Wir hatten 2 Laptops, beide WinXP mit IE6-SP1, beide gingen an einen DSL-Router ganz normal ins Netz, und hatten plötzlich Probleme wie ich sie noch nie vorher erlebt hatte. Ich habe mir den Betroffenen Code 100 mal durchgesehen, ich habe den weitestgehend vereinfacht... und der Server lief schon seit Monaten so und nicht anders durch, ist aber erst wie gesagt in den letzten 3 Tagen aufgefallen (sonst arbeite ich auch nicht mit WinXP oder IE), aber auch sonst ist es niemandem aufgefallen vorher. Daher hatte ich irgendwie die Befürchtung das irgendwas auf dem Server volläuft - aber was? Was etwas ärgerlich ist, der Server wurde heute Nacht für eine geplante Wartung runtergefahren und neu gestartet. Möglicherweise wurden hierdurch irgendwelche Voraussetzungen verändert.
nachdem die Behandlung von $_POST neu in PHP implementiert wurde.
Hm. Bin mir gar nicht sicher dass es nur bei POST passiert. Ich habe auch noch eine Rewrite-Rule des Apachen dazuwischen, hm ist wirklich schwierig.
Ich habe damals zu den ersten gehört, die den Bug entdeckt und gemeldet haben.
Du bist Dir ganz sicher dass es sich hier um einen PHP-Bug handelt? Tritt das mit allen Browsern auf? Hast Du mal mit Ethereal geguckt ob der Browser auch alles richtig macht? Leider ist meine Architektur etwas komplexer, so dass ich nicht ohne weiteres sagen könnte was sich da genau abgespielt hat, dazu müsste ich mir die HTTP-Header ansehen - was allerdings zur Zeit nicht klappt da nicht reproduzierbar.
Ergebnis: Viel rumgewurschtel im Bugreport, irgendwann als "fixed" markiert, aber Pustekuchen, Bug immer noch (wenn auch seltener) aufgetreten, meine Bitte auf Wiederöffnung des Bugreports in den Wind geblasen.
Hm, ist halt die Frage ob es wirklich ein PHP-Bug ist. Ich meine, wenn es ein Fehler in PHP ist, dann müsste sich dieses Fehlverhalten doch reproduzieren lassen, und das schaffe ich z.B. nicht. Gestern habe ich es sicher 50 mal geschafft - ungewollt...
Wenn ich halt 100% denselben Request an den Server schicke, dann muss der Server ja eigentlich auch 100% dasselbe damit machen, oder? Ich würde als erstes gerne mal sehen, ob man den Client komplett ausschließen kann, das heißt - Verhalten reproduzieren, während Ethereal eingeschaltet ist, und die Pakete genaz genau ansehen. Wenn das OK ist, kann man auf dem Server gucken, das heißt gewisse Dinge loggen, vor allem bestimmte Umgebungs-Variablen, Header, Zeitpunkt...
Dann weiß man - kommen die Daten vielleicht gar nicht bis ins Script? Vielleicht ein Problem mit der Server-Schnittstelle?...
Gerüchteweise habe ich auch gehört, daß der Fehler (in selteneren Fällen) auf ohne den extra Enctype auftritt, einmal meine ich sogar es selbt beobachtet zu haben.
Also sicher bin ich da nicht, ich bin mir nichtmal sicher ob es nur in Formularen auftritt, das wollte ich alles heute "erforschen", und schon klappt wieder alles wie geschmiert...
enctype verwende ich des öfteren, weil ich öfter Dateien hochlade.
Damals bin ich aus einem Login-Bereich der allereinfachsten Sorte rausgeflogen - selbst nach dreimaliger Überprüfung habe ich keinen Fehler gefunden, der das hätte hervorrufen können, nur der Verlust von $_SESSION ...
Mein Problem ist: Ich bin eingeloggt, mache schöne Sachen mit der Session, schreibe dies und das da rein, und auf einmal, kann die Session-ID nicht zugeordnet werden, und ich bekomme eine neue, und schon fliege ich raus, und kann auf meine alte Session nicht mehr zugreifen. Die ist natürlich noch existent, aber ich habe ja jetzt eine neue Session-ID...
Na gut, wie gesagt, der $_POST-Bug ist als "fixed" markiert, geistert aber immer noch ab und zu durch die Welt. Interessant ist, daß vor allem der IE besonders stark davon betroffen zu sein scheint, allerdings haben ich und andere das Verhalten auch schon bei Mozilla (keine Ahnung mehr, welche Version das damals war) und Opera beobachtet, wenn auch deutlich seltener.
Hat niemand mal "HTTP-Mitschnitte" von der Kommunikation (http://www.ethereal.com/download.html), oder hat jemand einen Tipp wie man den Fehler besonders zuverlässig reproduzieren kann?
Daß darüberhinaus keine (komplett funktionellen) Workarounds existieren macht die Sache _extrem_ ärgerlich. Die zur Schau gestellte Arroganz und Ignoranz der PHP-Entwickler setzt dem ganzen die Krone auf und macht PHP summa sumarum für den betroffenen Einsatzbereich untauglich. Traurig, aber wahr.
Die Entwickler haben ständig mit Problemen anderer Leute zu tun, die gar nichts mit PHP zu tun haben, da kann sowas schonmal passieren. Und solange man den Bug nicht leichter reproduzieren kann wird es auch sehr, sehr schwer diesen zu beheben.
Viele Grüße
Andreas
SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/