Maison  >  Article  >  développement back-end  >  Introduction à la façon d'empêcher la soumission répétée de formulaires en PHP (exemple de code)

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

不言
不言avant
2019-02-11 09:21:122493parcourir

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);

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']);

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer