Wie kann man mit PHP mehrere Formularübermittlungen verhindern?

Barbara Streisand
Freigeben: 2024-11-09 14:26:02
Original
651 Leute haben es durchsucht

How to Prevent Multiple Form Submissions with PHP?

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();
Nach dem Login kopieren
<form method="post">
  <fieldset>
    <input type="hidden" name="token" value="<?php echo $token; ?>" />
    <!-- Add form content -->
  </fieldset>
</form>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage