Introduction à la façon d'empêcher la soumission répétée de formulaires en PHP (exemple de code)

不言
Libérer: 2023-04-05 06:36:01
avant
2511 Les gens l'ont consulté

Ce que cet article vous apporte est une introduction à la méthode PHP pour empêcher la soumission répétée de formulaires (exemples de code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Honteux de le dire, j'ai commis une simple erreur alors que je travaillais sur un projet il y a quelques jours. Lors de la soumission des formulaires dans le backend de l'entreprise, l'un a été utilisé par mes propres employés et l'autre a été rédigé par moi-même en HTML. Le formulaire a été soumis à plusieurs reprises sans vérification et le résultat a été une erreur. Notez-le et enregistrez-le pour vous en souvenir et ne le négligez jamais.

Solutions

En fait, il existe de nombreuses méthodes, juste quelques exemples simples.

Framework

De nombreux frameworks ont pour fonction d'empêcher les soumissions répétées tout le monde devrait le savoir, je n'entrerai donc pas dans les détails ici.

Front-end

Le principe est très simple Une fois que l'utilisateur clique sur soumettre, utilisez simplement JS pour griser le bouton de soumission.

Le backend

utilise également PHP pour la vérification, bien sûr il ne se limite pas aux types suivants

Cookie

L'utilisateur soumet le formulaire au backend, dans le cookie, faites une marque et les soumissions répétées dans le délai spécifié seront invalides. Mais cette méthode échouera si l'utilisateur désactive les cookies.

<?php

if (isset($_COOKIE['formFlag'])) {
    exit('error');
}

// 处理数据

// 30秒内重复提交无效
setcookie('formFlag', time(), time() + 30);
Copier après la connexion

Session

Lors de l'affichage de la page du formulaire, un nombre aléatoire est généré et stocké dans la Session et dans le champ caché du formulaire. Lors de la première soumission, la comparaison supprime avec succès la valeur dans la session.

<?php

if (!isset($_SESSION['formFlag']) || $_POST['formFlag'] != $_SESSION['formFlag']) {
    exit('error');
}

// 处理数据

unset($_SESSION['formFlag']);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal