IE Bug - checkbox

Status
Nicht offen für weitere Antworten.

Henkerscript

Grünschnabel
Ich weiss nicht, ob das Problem schon hier bereits bekannt ist, ich habe in der Suche nichts gefunden.

Ich habe gestern ca. 2 Stunden damit verbracht einen Fehler in einem Script zu beheben. Schliesslich stellte sich heraus, daß ich auf einen Bug gestoßen bin. Und zwar wird unter Umständen das erste Feld eines Forulares nicht an den Server übergeben. Der Bug tritt mit den folgenden Bedingungen auf:

  • Internet-Explorer (benutze version 6, frühere Versionen noch nicht getestet)
  • Formular mit enctype="multipart/form-data"
  • Eine unselektierte Checkbox am Ende (also direkt vor dem Submit)
  • Ein Eingabefeld mit Sonderzeichen wie z.B. "€"

Trifft das alles zu, wird das erste Input-Feld geradezu "verschluckt" und kommt im Submit-Script nicht an. Allerdings passiert das nur im IE, im Mozilla funktioniert alles wie erwartet.

Das Problem kann damit behoben werden, daß man unmittelbar vor dem Submit ein Hidden-Input setzt. Durch den letzten "gesetzten" übergebenen Wert wird der gesamte Stream übertragen. Man könnte auch ein hidden als erstes übergeben und den verschlucken lassen, allerdings wäre da ausgiebig zu testen, ob der Bug nicht noch weitere Variablen ignoriert, wenn das Formular mal wächst. Die sauberste Methode wäre natürlich ein Bugfix seitens M$, nur besteht das Problem leider und ich empfehle ein Hidden-Input namens "HiddenIEBug" vor dem Submit-Input.

Sollte Jemand mehr Infos darüber haben, oder gar eine elegantere Methode um den Bug zu übergeben, wäre ich sehr dankbar. Ansonsten hoffe ich geholfen zu haben.
 
Ich kann das von dir beschriebene Phänomen leider nicht nachvollziehen. Könntest du bitte ein entsprechendes Beispiel angeben.
 
Einfach mal in einer test.php o.ä. ausführen:

PHP:
<?php
$uri= $_SERVER['PHP_SELF'];

echo "<h1>Post-Variablen:</h1>";
echo "<pre>";
print_r( $_POST);
echo "</pre><hr><br /><br />";

echo <<<EOT
	<h1>IE-BUG : Test-Formular:</h1>
	Info: Sobald man das Formular sendet, stehen oben die übertragenen POST-Variablen.<br />
	Sollte ein Sonderzeichen wie z.B. das € in einem Textfeld enthalten sein UND die optionale
	Checkbox ist deaktiviert, so wird die erste POST-Variable (in diesem Fall "Titel") nicht
	übergeben.<br />
	<form action="?$uri" enctype="multipart/form-data" method="post" name="IEBugTestForm"><div align="left">
		Titel: <input type="Text" name="titel" value="Test..." size="20" maxlength="20"><br />
		Text: <textarea name="text" cols="30" rows="6">Bier kostet 3€</textarea><br />
		Optional: <input type="Checkbox" name="check1" value="1"><br />
		<input type="Submit" value="  Senden...  ">
	</div></form>
EOT;
?>
 
Tut mir leid, egal was ich mache, einen möglichen Bug kann ich nicht entdecken. Es werden alle Formulardaten übermittelt, nichts verschwindet.
 
Das wird immer seltsamer, ich habe die gleiche Version, jedoch funktionierts auf dem Mozilla. Evtl. liegt es an der Kombination mit dem Apache 2 und IE. Ich arbeite ausserdem mit php5, aber ich denke mal, daran liegt es nicht. Ich nehme an, bei Dir läuft Apache 1.x. Oder? Wenn nicht, dann bin ich doch sehr verwirrt...
 
Status
Nicht offen für weitere Antworten.
Zurück