Hans: Leeres Feld bei INPUT Type=file nach history.back

Hallo,
ich prüfe ein HTML Formular mit PHP und gebe dann ggf. Fehlermeldungen aus. User muss zurückblättern zwecks Korrektur. Problem: alle Eingaben sind noch exakt wie zuvor vorhanden, nur mein "Kann"-Feld für eine Dateiupload ist leer obwohl es per "Durchsuchen..." gefüllt wurde. Böse Falle !
User berichtigt die Fehler und schickt das Formular ab, die Uploadfile fehlt dann unerwartet...
Tipps für eine Lösung (php) ?
Danke
Hans

  1. Hi Hans,

    Tipps für eine Lösung (php)?

    Da wirst du wohl nichts machen können, denn ein Vorbelegen des File Feldes ist ja aus Sicherheitsgründen nicht möglich. Mache den User eben nochmal explizit darauf aufmerksam, dass er den File neu auswählen muss - der wird sich zwar freuen, aber... ;-)

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:| [decode]
    Antworten per E-Mail gibts hier nicht!
    1. Hi Dennis,
      so mach ich es gerade mit dem Hinweis. Hab schon befürchtet, dass das mit der nicht möglichen Vorbelegung zusammenhängt...
      Danke

      Die Antwort von wahsaga:
      die File wurde noch nicht gesendet. Das passiert natürlich erst nach der gesamten Feldprüfungsroutine... ;-))

      1. Hallo,

        Die Antwort von wahsaga:
        die File wurde noch nicht gesendet. Das passiert natürlich erst nach der gesamten Feldprüfungsroutine... ;-))

        Wie verhinderst Du das?
        Wenn ein Formular mit method="POST" und enctype="multipart/form-data" mit gefülltem INPUT type="file" abgesendet wird, dann wird die Datei _natürlich_ als BYTE-Daten in einem Part mitgesendet.

        viele Grüße

        Axel

        1. Hallo, danke an alle !
          Ich glaube ich hab mich zu wenig "technisch" ausgedrückt. Alles Freaks hier und keine User :-))

          Ist klar, dass alles zum Server geht, sonst könnte mein script auch keine Prüfungen der Daten durchführen. Aber wenn ich im script dann Fehler feststelle und eine Fehlerseite ausgebe, verlasse ich das script und habe noch nichts (als Mail an mich) gesendet. Beim verlassen des scripts verschwindet doch alles spurlos im Nirwana - oder... das wäre jetzt neu für mich :-o

          Ich schicke im Normalfall - wenn alles ok ist - die Uploadfile als Mail-Attachment mit und speichere ansonsten nirgends was ab.

          Nun ist mir ggf. eine Lösung eingefallen: ich könnte mir die noch lückenhaften Daten und die File als Mail auf jeden Fall zusenden, dann hab ich das Bild, auch wenn der "Rest" dann später kommt.

          Gruss
          Hans

          1. Hallo,

            Ich schicke im Normalfall - wenn alles ok ist - die Uploadfile als Mail-Attachment mit und speichere ansonsten nirgends was ab.
            Nun ist mir ggf. eine Lösung eingefallen: ich könnte mir die noch lückenhaften Daten und die File als Mail auf jeden Fall zusenden, dann hab ich das Bild, auch wenn der "Rest" dann später kommt.

            So ähnlich hatten wir es gemeint. Allerdings finde ich zwei Mails etwas unsinnig.

            Du bekommst die Datei in jedem Fall, wenn jemand eine im INPUT type="file" ausgewählt hat. Hat er in den anderen Feldern was falsch gemacht, und muss das Formular nun mochmal bearbeiten, sendest Du ihm die vorhandenen Daten als values für die Felder im Formular mit zurück. Das geht bei INPUT type="file" nicht. Aber Du kannst die Datei irgendwo, abhängig von den Session-Daten oder anderen Daten zur späteren Zuordnung, zwischenspeichern. Wenn das Formular nun bein x-ten ;-)) Mal endlich richtig ausgefüllt ist, der Nutzer aber nun vergessen hat, die Datei nochmal mit zu schicken, dann hast Du sie schon. Wenn er sie nochmal mitsendet, ist es auch nicht schlimm. Dann verwirfst Du die Zwischenspeicherung.

            Noch benutzerfreundlicher wäre, als Antwort auf ein falsch ausgefülltes Formular mit aber richtig mitgesendeter Datei, das File-Input-Feld gar nicht mehr mit zurück zu senden. Dann sieht der Nutzer gleich, dass er die Datei nicht nochmal senden muss.

            viele Grüße

            Axel

      2. hi,

        die File wurde noch nicht gesendet. Das passiert natürlich erst nach der gesamten Feldprüfungsroutine... ;-))

        das ist nicht richtig.
        wie Axel schon sagte, sobald du so ein formular abschickst, lädt der browser die datei auf den server hoch.

        was du in deinem PHP-script noch alles an überprüfungen machst, hat darauf nicht den geringsten einfluss - weil dein PHP-script überhaupt erst gestartet wird, nachdem der komplette upload abgeschlossen ist.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Tipps für eine Lösung (php) ?

    Kann man den Quellcode mal sehen. (Forumular und php-file)

    MfG Bummi

  3. hi,

    ich prüfe ein HTML Formular mit PHP und gebe dann ggf. Fehlermeldungen aus. User muss zurückblättern zwecks Korrektur. Problem: alle Eingaben sind noch exakt wie zuvor vorhanden, nur mein "Kann"-Feld für eine Dateiupload ist leer obwohl es per "Durchsuchen..." gefüllt wurde. Böse Falle !

    dass das file schon beim ersten abschicken hochgeladen wurde, ist dir bekannt?
    also kannst du es auch im fehlerfalle schon aus dem temp-verzeichnis herausholen und irgendwo sichern.

    User berichtigt die Fehler und schickt das Formular ab, die Uploadfile fehlt dann unerwartet...

    wäre ja auch suboptimal, wenn er ein mehrere KB oder vielleicht gar MB großes file erneut hochladen müsste, nur weil er beim eintippen irgendwelcher textdaten ins formular einen fehler gemacht hat.

    der einzige problemfall wäre m.E., wenn der user beim zweiten abschicken ganz bewusst keine datei mehr mitschicken will, und das feld deshalb leer lässt - da müsstest du dir noch eine möglichkeit überlegen, dass vorher gesichterte file wieder zu löschen, anstatt zu verarbeiten, weil der user vermutlich auf den upload ganz verzichten wollte.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }