探讨PHP表单重复提交的预防法则_PHP教程
当用户单击“提交”按钮后,该按钮将变为灰色不可用状态。
上面的例子中使用OnClick事件检测用户的提交状态,如果单击了“提交”按钮,该按钮立即置为失效状态,用户不能单击按钮再次提交。
还有一个方法,也是利用JavaScript的功能,但是使用的是OnSubmit()方法,如果已经提交过一次表单,将立即弹出对话框,代码如下:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> </span><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"hidden"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"originator"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"=$code?>"</span><span class="tag">></span><span> </span></span></span></li> <li><span>在接收页面的PHP代码如下: </span></li> <li class="alt"><span class="tag"><span> ?phpsession_start();if(isset($_POST['originator'])) { </span></span></li> <li><span>if($_POST['originator'] == $_SESSION['code']){// 处理该表单的语句,省略 </span></li> <li class="alt"><span>}else{ </span></li> <li><span>echo ‘请不要刷新本页面或重复提交表单!’; </span></li> <li class="alt"><span>} </span></li> <li> <span>}</span><span class="tag">?></span><span> </span> </li> </ol>
在上例中,如果用户已经单击“提交”按钮,该脚本会自动记录当前的状态,并将submitcount变量自加
1,当用户试图再次提交时,脚本判断submitcount变量值非零,提示用户已经提交,从而避免重复提交表单。
2.使用Cookie处理
使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,请见下面的代码:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> ?php </span></span></span></li> <li><span>if(isset($_POST['go'])){setcookie("tempcookie","",time()+30); </span></li> <li class="alt"><span>header("Location:".$_SERVER[PHP_SELF]);exit(); </span></li> <li><span>} if(isset($_COOKIE["tempcookie"])){ </span></li> <li class="alt"><span>setcookie("tempcookie","",0);echo "您已经提交过表单"; </span></li> <li> <span>}</span><span class="tag">?></span><span> </span> </li> </ol>
如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。
3.使用Session处理
利用PHP的Session功能,也能避免PHP表单重复提交。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交,请见如下代码:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> ?php </span></span></span></li> <li><span>session_start();//根据当前SESSION生成随机数 </span></li> <li class="alt"> <span>$</span><span class="attribute">code</span><span> = </span><span class="attribute-value">mt_rand</span><span>(0,1000000); </span> </li> <li><span>$_SESSION['code'] = $code; </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li> </ol>
在页面表单上将随机数作为隐藏值进行传递,代码如下:
<ol class="dp-xml"><li class="alt"><span><span class="tag"><span> </span><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"hidden"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"originator"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">""</span><span class="tag">></span><span> </span></span></span></li></ol>
在接收页面的PHP代码如下:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> ?php </span></span></span></li> <li><span>session_start(); </span></li> <li class="alt"><span>if(isset($_POST['originator'])) { </span></li> <li><span>if($_POST['originator'] == <br>$_SESSION['code']){ </span></li> <li class="alt"><span>// 处理该表单的语句,省略 </span></li> <li><span>}else{ </span></li> <li class="alt"><span>echo ‘请不要刷新本页面或<br>重复提交表单!’; </span></li> <li><span>} </span></li> <li class="alt"> <span>}</span><span class="tag">?></span><span> </span> </li> </ol>
4.使用header函数转向
除了上面的PHP表单重复提交的预防方法之外,还有一个更简单的方法,那就是当用户提交表单,服务器端处理后立即转向其他的页面,代码如下所示。
<ol class="dp-xml"> <li class="alt"><span><span>if (isset($_POST['action']) <br>&& $_POST['action'] == 'submitted') { </span></span></li> <li><span>//处理数据,如插入数据后,立即转向到其他页面 </span></li> <li class="alt"><span>header('location:submits_success.php'); </span></li> <li><span>} </span></li> </ol>
以上就是PHP表单重复提交的几个预防方法的介绍。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Si vous êtes un développeur PHP expérimenté, vous aurez peut-être le sentiment d'y être déjà allé et de l'avoir déjà fait. Vous avez développé un nombre important d'applications, débogué des millions de lignes de code et peaufiné de nombreux scripts pour réaliser des opérations.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.
