2011-01-06 7 views
0

ich ein Formular auf einer Seite haben .Jetzt ich das Formular auf der gleichen Seite vorlege (mit Post) .Diese Teil gut funktioniert. Aber wenn ich die Seite aktualisiere, wird das Formular erneut gesendet. Hinweise, wie Sie das beheben können.Multiple Formular auf Seite Referesh PHP

+0

Sie können die Umleitung verwenden oder können Sie Formular nonce verwenden, um Doppelarbeit – shankhan

+0

Mögliche Duplikate zu vermeiden: http://stackoverflow.com/questions/3923904/preventing-form-resubmission, http://stackoverflow.com/questions/880437/preving-double-form-submissions, http://stackoverflow.com/questions/218907/how-to-handle-multiple-submissions-server-side ... etc ... – Yahel

Antwort

3

Führen Sie eine Header-Umleitung entweder auf dieselbe Seite oder auf eine andere Seite durch.

+0

Ich versuche, ein zu tun Redirect, aber das Problem ist, die Seite ist in einer Kopfzeile getrennt - body-footer.So, wenn ich versuche, es umleiten gibt mir eine Warnung: Header bereits gesendet an (header.php) zeigt auf die Kopfzeile Ich habe in der Seite.Wie damit umgehen? –

+0

Header müssen vor jeder Ausgabe stehen (selbst ein einzelnes Leerzeichen wird diese Warnung verursachen). Ich empfehle dringend, die Kopfzeile am oberen Rand der Seite (in einer Bedingung) zu setzen, aber Sie könnten auch Ausgang Pufferung zuvor aktivieren. Beachten Sie jedoch, dass dies zu einer höheren CPU-Auslastung führt. – simshaun

+0

löste es mit Ausgabepufferung. –

0

Sie können mit Sitzungen arbeiten. Wenn der Formularname in der Sitzung vorhanden ist, behandeln Sie das Formular nicht erneut.

2

Zurückleiten auf die gleiche Seite nach der Verarbeitung der POST-Anfrage.

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    # process the request ... 

    # ... and redirect 
    header('Location: page.php'); 
} 
0

Wie die anderen bemerkt haben, können Sie eine HTTP-Umleitung verwenden, indem die Header modifizieren zurück zum Browser des Benutzers gesendet. Die Funktion header() in PHP ermöglicht dies. Stellen Sie sicher, dass Sie diesen Funktionsaufruf vor der Ausgabe von irgendetwas ausführen, andernfalls wird es fehlschlagen. Es könnte in etwa wie folgt aussehen.

<?php 
// some code to process the form data here 
header('Location: page.php'); // redirect user to page.php 
+0

Ich versuche, eine Umleitung zu tun, aber das Problem ist die Seite ist in einer Kopfzeile getrennt - body-footer.So, wenn ich versuche, es umleiten gibt mir eine Warnung: Header bereits gesendet an (header.php) auf den Header zeigen Ich habe auf der Seite.Wie soll ich damit umgehen? –

Verwandte Themen