Fileupload-Feld leer nach "javascript back" (php)

HPI-Service

Aktives Mitglied
Hallo,

habe ne kleines Problem, und leider mit "googlen" keine Lösung gefunden
huh.gif


Ich habe ein php-Formular worüber User auch Dateien hochladen können (die dann per E-Mail mit versendet werden). Dieses Formular enthält noch andere Angaben. Es funktioniert soweit sehr gut bis auf ein Punkt.

Wenn der User das Fileupload Feld ausfüllt und vergisst ein anderes Pflichtfeld auszufüllen kommt eine Fehlermeldung und der bekannte "<a href="javascript:history.go(-1);">« zurück</a>" Button. Das Problem ist, dass dann das bereits befüllte Fileupload Feld wieder leer ist (alle anderen bereits ausgefüllten Felder bleiben befüllt).

Dieses ist natürlich sehr schlecht, da der User garantiert vergisst das Fileupload Feld erneut zu füllen, da er es ja bereits getan hat.

Dieses tritt aber nur im IE auf, im Firefox ist das Fileupload Feld nach "Zurück" auch befüllt. Gibt es hierfür eine einfache Lösung?

Danke im voraus...

Gruß
Mirko

 
Eventuell wird das "Cachen" der Seite durch das PHP Skript verhindert.
 
das kenn ich. Habe bisher aber auch keine Lösung gefunden. Der einzige Weg (quick&dirty): Frage die evtl. Formularfehler vorher schon mti Javascript ab... Dann musst du die Seite erst neuladen, wenn das Formular wirklich abgeschickt wurde...
 
QUOTE (HPI-Service @ Do 17.04.2008, 21:58)Wenn der User das Fileupload Feld ausfüllt und vergisst ein anderes Pflichtfeld auszufüllen kommt eine Fehlermeldung und der bekannte "<a href="javascript:history.go(-1);">« zurück</a>" Button.

Wer nutzt denn so eine komische Lösung? Clientseitiges JavaScript hat doch nichts mit einer Client-Server - Kommunikation zu tun.

Man kann per JavaScript vor dem Absenden alles überprüfen und dann das Absenden stoppen.

Oder man schickt das an den Server, der Server cacht dann aber die hochgeladene Datei (Zuordnung über eine Session) und blendet bsp. bei der Ausgabe für die Neueingabe das Upload-Feld aus (weil es ja schon geschickt wurde).
 
Oder du machsd aus dem "zurueck" auch einen submit und submittest auf die gleiche seite zurueck, wobei du dann die werte einsetzt in das Feld

also <input name=asdf type=text value=<?php echo $_POST['asdf'];?>>

 
Hallo,

vielen Dank für Eure Antworten.

@jAuer
Dann wird mir wohl nichts anderes übrig bleiben, als die Prüfung der Felder umzustellen. Wollte mir halt diese Arbeit sparen, da das Formular extrem umfangreich ist mit ca. 30 Pflichtfeldern, Checkboxen, umfangreiche Ausfüllhilfe zu jedem Feld etc.

Momentan ist das so gelöst:

CODE if (empty ($vorname)) {
die ("<p><b><font color=#FF0000>Fehler:</font></b> Sie müssen Ihren Vornamen eingeben.<br><br><a href=\"javascript:history.go(-1);\">« zurück</A></p>");}


Dieses ist noch von einem normalen Kontaktformular ohne Fileupload übernommen worden
wink.gif


Gruss
Mirko
 
QUOTE (HPI-Service @ So 20.04.2008, 17:26)Dann wird mir wohl nichts anderes übrig bleiben, als die Prüfung der Felder umzustellen. Wollte mir halt diese Arbeit sparen, da das Formular extrem umfangreich ist mit ca. 30 Pflichtfeldern, Checkboxen, umfangreiche Ausfüllhilfe zu jedem Feld etc.


Da geht es nicht um ein Umstellen, sondern um ein 'Zusätzlich'. Denn die Prüfung muß immer serverseitig erfolgen, clientseitig läßt sie sich mit links aushebeln. Deshalb habe ich innerhalb von server-daten auch so gut wie keine clientseitigen Prüfungen drin, löse das Problem 'Eingabefehler plus Upload-Datei' aber so, daß die Datei gecacht wird. Und Datei- bzw. Bilderupload gibt es bei Kundendatenbanken (nicht auf beispiel.server-daten.de).


QUOTE (HPI-Service @ So 20.04.2008, 17:26)Momentan ist das so gelöst:


CODE if (empty ($vorname)) {
die ("<p><b><font color=#FF0000>Fehler:</font></b> Sie müssen Ihren Vornamen eingeben.<br><br><a href=\"javascript:history.go(-1);\">« zurück</A></p>");}



Das ist allerdings eine strukturell schlechte Lösung. Bei Fehlern sollte dasselbe Formular erneut angezeigt werden, mit den geposteten Daten, damit man die nicht erneut eingeben muß - und möglichst in unmittelbarer Nähe des Fehlers eine Fehlermeldung erscheinen.

Und möglichst alle Fehler auf einmal, damit man alle in einem Durchlauf beheben kann.
 
Zurück
Oben