Verhindern mehrerer Formularübermittlungen mit PHP
Bei der Webentwicklung ist es wichtig, sich vor mehrfachen Formularübermittlungen zu schützen, wenn ein Benutzer wiederholt auf das Senden klickt Taste. Dies kann zu unbeabsichtigten Ergebnissen wie doppelten Dateneinträgen oder unerwartetem Verhalten führen. PHP bietet mehrere Techniken, um dieses Problem zu verhindern.
Ein effektiver Ansatz ist die Verwendung eindeutiger Formular-Tokens. Wenn ein Formular angezeigt wird, wird ein eindeutiges Token generiert und in der Sitzung gespeichert. Beim Absenden des Formulars wird das Token mit der gespeicherten Version verglichen. Wenn die Token übereinstimmen, wird die Formularübermittlung verarbeitet. Ist dies nicht der Fall, wird die Übermittlung abgelehnt, wodurch mehrere Übermittlungen verhindert werden.
Hier ist eine einfache PHP-Implementierung:
session_start(); function getToken() { $token = sha1(mt_rand()); if (!isset($_SESSION['tokens'])) { $_SESSION['tokens'] = array($token => 1); } else { $_SESSION['tokens'][$token] = 1; } return $token; } function isTokenValid($token) { if (!empty($_SESSION['tokens'][$token])) { unset($_SESSION['tokens'][$token]); return true; } return false; } $postedToken = filter_input(INPUT_POST, 'token'); if (!empty($postedToken)) { if (isTokenValid($postedToken)) { // Process form } else { // Handle error } } $token = getToken();
<form method="post"> <fieldset> <input type="hidden" name="token" value="<?php echo $token; ?>" /> <!-- Add form content --> </fieldset> </form>
Um die Sicherheit zu erhöhen, kombinieren Sie diese Token-Validierung mit einer Weiterleitung zur Formularübermittlung. Dadurch wird sichergestellt, dass, wenn ein Benutzer die Zurück-Taste drückt, ein neues Formular mit einem neuen Token angezeigt wird. Dieses Muster, bekannt als POST / Redirect / GET, verhindert außerdem mehrfache Übermittlungen und gewährleistet die Abwärts- und Vorwärtskompatibilität.
Das obige ist der detaillierte Inhalt vonWie kann man mit PHP mehrere Formularübermittlungen verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!