Ankündigung

Einklappen
Keine Ankündigung bisher.

Lösungsvorschlag zur verhinderung von history(-1)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Lösungsvorschlag zur verhinderung von history(-1)

    Hi,

    folgender Normaler Ablauf:

    Kunde bestellt irgendwas im Shop und muß zum Schluß den Bestellbutton klicken.

    Das abgeschickte form leitet den Besucher im Hintergrund erstmal auf die save.php, die die Bestellung speichert.
    Diese Datei includiert die mail.php, die die Bestellemail versendet.

    Ist das ende von der Datei save.php erreicht, wird mittels header_loc. auf die pay.php weitergeleitet, wo der Besucher ein erfolgreichen Bestelltext sieht. Das hat schon mal den Vorteil, das die save.php beim "browser zurück klicken" nicht auffrufbar ist. (und die Bestellung somit ein 2tes mal gespeichert wird). Das passt also schon mal.

    Falls der Besucher nun zurückklickt (also in der History einen Schritt zurück), sagt FF, das die Seite abgelaufen sei. (schon mal ganz gut.) Leider befindet sich da auch der Button "Erneut senden".
    Klicke ich dort drauf, wird die letzte Seite nochmal gesendet und ich befinde mich dann wieder auf der Abschlußseite vom Warenkorb, wo der Besucher den Bestellbutton erneut klicken kann.

    Dies würde ich gern verhindern.
    Erst dachte ich mir, das ich alle Register ziehe und Session und den Cookie neu setze. Zumindest habe ich das als rundumschlag Variante im Web gefunden.

    PHP-Code:
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true);            //Ersetzt die aktuelle Session-ID durch eine neu erzeugte 
    Klappen tut das auch ganz gut. Beim normalen weiternavigieren ist nix mehr da. Allerdings greift das nicht bei der history(-1) navigation.
    So ganz kann ich mir das noch nicht erklären, wie das funktioniert.
    Der Client sendet die von mir (auf den Server) gelöschte Session/Cookie erneut und der Server übernimmt die (?)


    Hoffe, das einer einen guten Vorschlag hat, wie ich das Zuürcknavigieren entweder verhindern kann (laut web = garnicht) oder eine alternativen Lösungsvorschlag, auf den ich jetzt noch nicht gekommen bin.

    Danke...

    Nachtrag: schemata
    Code:
    <Warenkorb_überischt>
          |
          |-> <Warenkorb_Adresseingabe>
                        |
                        |-> <Warenkorb_abschluß>
                                   |
                                   save.php   ==> mail.php
                                   |
                            <Zahlungsbestätigungs_seite>

  • #2
    gelöscht

    Kommentar


    • #3
      Neu senden kannst Du gar nicht verhindern. Du kannst aber bspw. im Formular eine Prozessnummer generieren und die anschließend als „benutzt“ in der Session ablegen (resp. in der Session ablegen und bei Action rauslöschen). Anhand dieser Prozessnummer kannst Du dann Doppelausführungen erkennen und weiteres Processing abbrechen.

      Kommentar


      • #4
        Vielleicht hilft Dir dieser Beitrag:
        http://www.php.de/php-einsteiger/900...ltflaeche.html

        Kommentar

        Lädt...
        X