Maison >développement back-end >Problème PHP >Comment empêcher la soumission répétée de formulaires en php
php empêche l'envoi répété de formulaires
Solution 1 : introduire un mécanisme de cookie pour résoudre
Soumettre le code de la page comme suit a.php le code est le suivant : (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
<form id="form1" name="form1" method="post" action="t2.php"> <p>说明 <input type="text" name="titile" /> </p> <p> <input type="submit" name="Submit" value="提交" /> </p> </form> <?php setcookie("onlypost", 't'); //设置cookie,可以带上时间值。像有些论坛防止灌水就可以将你的一些基本信息存放到里面。 ?>
Code PHP
<?php if($_COOKIE['onlypost'] == 't'){ print_r($_COOKIE); //处理提交的内容 如果验证成功则处理 print "ok"; setcookie("onlypost", 'f'); //改变cooike值删除也可以了 } ?>
Inconvénients de ce qui précède traitement : Si le client Si les cookies sont désactivés sur le client, cette méthode n'aura aucun effet. Veuillez le noter.
Solution 2 : Utiliser la session (c'est la même chose que la méthode de traitement JSP)
L'utilisation de la fonction Session de PHP peut également éviter la soumission répétée de formulaires. La session est enregistrée côté serveur. La variable Session peut être modifiée pendant l'exécution de PHP. La prochaine fois que vous accéderez à cette variable, vous obtiendrez la valeur nouvellement attribuée. Par conséquent, vous pouvez utiliser une variable Session pour enregistrer la valeur soumise par le. S'il ne correspond pas, il est considéré que c'est l'utilisateur qui soumet à plusieurs reprises.
Code de la page A :
<?php session_start(); //根据当前SESSION生成随机数 $code = mt_rand(0,1000000); $_SESSION['code'] = $code; //将此随机数暂存入到session ?> <form id="form1" name="form1" method="post" action="t2.php"> <p>说明 <input type="text" name="titile" /> <input type="hidden" name="originator" value="<?php echo $code;?>"> </p> <p> <input type="submit" name="Submit" value="提交" /> </p> </form> B页面: <?php session_start(); if(isset($_POST['originator'])) { if($_POST['originator'] == $_SESSION['code']){ echo "ok"; unset($_SESSION["code"]); //将其清除掉此时再按F5则无效 }else{ echo "请不要刷新本页面或重复提交表单"; } }?>
Solution 3 : Traitement de redirection côté serveur
if (isset($_POST['action']) && $_POST['action'] == 'submitted') { // 处理数据,如插入数据后,立即转向到其他页面 header('location:submits_success.php'); //效果与JSP里面的sendRedirect类似 }
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!