2010-12-09 5 views
0

Ich habe ein Formular, das XML verwendet, um Ergebnisse zu erhalten. Aus diesen Ergebnissen können Benutzer auf eine Detailseite klicken. Mein Problem ist, wenn ein Benutzer zurück auf die Ergebnisseite klickt, werden sie gefragt, ob sie das Formular erneut senden möchten. Wie erstelle ich das so zurück Schaltfläche zeigt nur die Ergebnisse, wie auf aa.com, ebay, Autotrader, etc.So zeigen Sie die Ergebnisse an, damit die Schaltfläche "Zurück" keine POST-Variablen erneut laden muss

Vielen Dank!

+0

Dupe: http://stackoverflow.com/questions/660329/prevent-back-button-from-showing-post-confirmation-alert – gnarf

+3

Die eigentliche Lösung: Die ["Post/Redirect/Get Pattern"] (http : //en.wikipedia.org/wiki/Post/Redirect/Get) - Wenn Sie 'header ('Location: /someotherpage.php');' als Antwort auf den Post - wird der Benutzer nicht aufgefordert, Post-Daten erneut zu übermitteln – gnarf

Antwort

1

Wenn Sie Ihre Seite senden, verschieben Sie die Variablen $ _POST in das Array $ _SESSION, und der Header leitet den Benutzer dann zur Ergebnisseite um.

+0

Verwenden Sie nicht SESSION, da dies die Rennbedingungen gefährdet – Quentin

+0

Das ist nur bei Verwendung von AJAX - also in einer Pseudo-Multi-Threaded-Umgebung - ansonsten völlig sicher. –

1

Sie sollten zu einer anderen Seite umleiten, um redirect() Methode Codezeichner zu verwenden. Dies verhindert, dass der Browser eine Bestätigung bei der Formularübermittlung einholt.

0

Ist es nur eine Suchseite, die Ergebnisse anzeigt? Warum nicht GET statt POST in Ihrem Formular verwenden? Mit Blick auf Suchmaschinen scheinen sie GET für ihre Suchoberfläche zu verwenden. Ich kann mir ein paar Gründe vorstellen, GET anstelle von POST zu verwenden.

  • Wenn die Operation Ergebnisse einfach semantisch abruft, ist die GET-Methode geeigneter. GET wird verwendet, wenn Sie Daten abrufen. POST wird häufiger verwendet, wenn Sie eine Änderung an der Anwendung senden.
  • Wenn Sie GET verwenden, erhalten Sie durch Klicken auf die Zurück-Schaltfläche kein Dialogfeld, in dem Sie gefragt werden, ob Sie das Formular erneut senden möchten.
  • Ihre Benutzer erhalten eine URL direkt auf einer Suchergebnisseite für eine bestimmte Abfrage, die sie freigeben können.
  • Leider führt CodeIgniter standardmäßig die Abfragezeichenfolge bei der Verarbeitung einer Anfrage durch. Sie können die Abfragezeichenfolge in CodeIgniter aktivieren, indem Sie this answer folgen.

    Verwandte Themen