rene: PHP Formulare und Netscape Resize...

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 beim Größe ändern des Fensters, oder wie kann ich das Reload automatisch ausführen lassen, ohne daß der Benutzer dies manuell tun muß?

  1. Hallo Rene

    Das Problem mit dem Netscape hatte ich auch schon.
    Meine Lösung war dabei, den NS im Fullscreen aufzurufen und
    resize zu disablen.
    (das aufrufende Fenster bleibt dabei allerdings offen,
    da ein self.close zu einer lästigen Rückfrage führt)
    Vielleicht hilft's Dir weiter

    Grüße
    oliver

    <script language="JavaScript">
    self.resizeTo(screen.availWidth,screen.availHeight);
    self.moveTo(0,0);
    browser = navigator.appName
    if (browser == 'Netscape')
    {
    open ("start.html","Fenstername","status=yes,toolbar=yes,locationbar=yes,resizable=no")
    }
    else
    {
    open ("start.html","_self")
    }
    </script>

  2. 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 ;-)