Carsten: PHP Formulare und Netscape Resize...

Beitrag lesen

Hallo rene,

Ich habe Formulare, die ich mit PHP weiterverarbeite.
Wenn ich aber Netscape resize, meldet der mir MISSIONG DATA - repost...
kann ich irgendwie entweder Netscape aufhalten, die Daten neu anzufordern
[...]

Eigentlich nicht.

Aber.... wenn du

  • die Daten in eine Datei oder eine Datenbank einträgst, oder
  • Session ID's (per URL/Cookie) hast, oder
  • die missing data-Problemseite nichts der eingegeben Daten anzeigt,

also bei

  • Gästebuch,
  • Forum,
  • Shop, (da gibts ja eh Session ID's)
    dann geht es.

Bei einem Mailscript, was den Mailtext nochmal anzeigt, ansonsten die
Mail aber nur per mail() verschickt geht es nicht.

Noch dabei ?

...

Dann kann ich ja anfangen:

Ablauf:

SERVER                   CLIENT
    
1.  Formular
      
      
2.     +-------------------> Browser
                                
                                V
                             Formular
                             wird ausgefüllt
                             und abgeschickt
                                
3.  Verarbeitung<------POST-----+
    Daten speichern
    (keine Anzeige)
      
4.     +---->Redirect----->Browser holt
                           neue Seite
                                
       +------------------------+
      
       V
5.  Folgeseite
    Daten Anzeigen
      
6.     +------------------->Browser zeigt neue
                            Seite

Der Trick liegt hier zwischen 3 und 4. Die Seite, die der User nach
abschicken des Formulars sieht (5) ist eine andere als die, welche die
Daten bekommen hat (3).
Jetzt kann der User bei (6) so oft Reload drücken (oder Resizen) wie er
will, er kriegt immer nur Seite (5) - und zwar ohne Re-Post Probleme.

Diese Methode hilft auch gegen die "Doppelposting bei Reload" Macke mancher
Gästebuchscripte bzw. man kann den gängigen Workaround mit der 'Danke'
Seite einsparen.

Falls du eine Danke(...) Seite anzeigen willst muss die Ausgabeseite (5)
wissen, welchen Datensatz sie Anzeigen soll, dazu noch mal kurz eine
Erläuterung:
Von (2) nach (3) werden die Benutzereingaben per 'POST' an das Script
weitergegeben. Es trägt diese Daten in eine Datei ein und schickt dem
Browser einen Redirect (sonst nix). Der Redirect kann einen Parameter
(in der URL) bekommen (Session ID, Posting/Datensatznummer), der dann
vom Ausgabescript (5) dazu benutzt wird die richtigen Daten anzuzeigen.

Tips:

Redirect geht mit
   header("Location: http://domain.de/anzeigeseite.php3?$idnummer");
(Unbedingt Manual (->http-Functions) dazu lesen, sonst gehts schief.)

(1) & (3) können das gleiche Script sein. Je nach Parametern macht das solange
das Formular, bis alle Werte i.o. sind, dann (und nur dann) speichert es
und macht den Redirect.

Gruss,
Carsten

P.S.: Ja, ich kann auf noch einfachere Fragen noch kompliziertere Antworten
geben ;-)