Position actuelle: Accueil> Derniers articles> PHP implémente la fonction anti-tisme: deux façons d'éviter efficacement la soumission répétée des formulaires

PHP implémente la fonction anti-tisme: deux façons d'éviter efficacement la soumission répétée des formulaires

M66 2025-06-23

Quelle est la fonction anti-Tableau et son importance

La fonction anti-shake fait référence au fait que lorsque l'utilisateur déclenche rapidement un événement plusieurs fois, la fonction de traitement des événements ne peut être exécutée qu'une seule fois, et la réexécution est éveillée dans un délai après le dernier déclencheur. Dans le développement Web, il est très important d'empêcher les utilisateurs de soumettre des formulaires à plusieurs reprises, car les soumissions répétées peuvent entraîner une redondance des données, une charge accrue du serveur et même des erreurs logiques.

Méthode 1: Utilisez la session pour enregistrer les horodatages pour atteindre l'anti-titulaire

Un moyen simple et efficace consiste à utiliser la session pour enregistrer l'horodatage de la dernière soumission de l'utilisateur, et pour déterminer si la soumission est autorisée en comparant l'intervalle entre l'heure actuelle et la dernière heure de soumission. L'exemple suivant montre l'implémentation spécifique:

// Allumez la session
session_start ();
<p>// Obtenez l&#39;horodatage actuel<br>
$ currentTimeStamp = time ();</p>
<p>// Obtenez l&#39;horodatage du dernier<br>
$ lastRiMestamp = $ _Session [&#39;LastTimestamp&#39;] ?? 0;</p>
<p>// Déterminez si l&#39;intervalle de temps est inférieur au temps anti-chasses spécifié (par exemple, 5 secondes)<br>
if ($ currentTimeStamp - $ lastRestamp <5) {<br>
écho «Veuillez ne pas répéter la soumission»;<br>
sortie;<br>
}</p>
<p>// Mette à jour le dernier coup de temps de la soumission<br>
$ _Session [&#39;LastTimeStamp&#39;] = $ currentTiMestamp;<br>

Ce code évite les utilisateurs de soumettre des formulaires à plusieurs reprises en peu de temps en déterminant si l'intervalle de temps de soumission est inférieur à la valeur définie. Lorsque vous l'utilisez, assurez-vous que le script commence à appeler session_start () pour activer la prise en charge de la session.

Méthode 2: Utilisez le mécanisme de jeton pour empêcher les soumissions répétées

Une autre méthode anti-tisme plus sûre consiste à utiliser des jetons. Chaque fois que le formulaire est rendu, un jeton unique est généré, enregistré dans la session et placé dans le formulaire en tant que champ caché. Lors de la soumission, l'arrière-plan vérifie si le jeton correspond, déterminant ainsi s'il s'agit d'une soumission en double.

// Allumez la session
session_start ();
<p>// générer un jeton unique<br>
$ token = md5 (uniqid (rand (), true));</p>
<p>// Enregistrez le jeton dans la session<br>
$ _SESSION [&#39;TOKEN&#39;] = $ Token;</p>
<p>// Passe le jeton sous la forme<br>
écho &#39;<input type="hidden" name="token" value="' . $token . '"> &#39;;;</p>
<p>// Vérifiez le jeton lors du traitement de la soumission du formulaire<br>
if ($ _post [&#39;token&#39;]! == $ _Session [&#39;token&#39;]) {<br>
écho «Veuillez ne pas répéter la soumission»;<br>
sortie;<br>
}</p>
<p>// continue de traiter les données du formulaire<br>
// ...<br>

Cette méthode empêche efficacement les formulaires d'être soumis à plusieurs reprises et est difficile à forger. Convient pour des scénarios où une protection plus stricte des données est nécessaire.

Résumer

Grâce aux deux méthodes de contrôle de l'horodatage de la session et de vérification des jetons, les développeurs PHP peuvent implémenter de manière flexible la fonction anti-titulaire pour éviter efficacement les problèmes causés par la soumission répétée des formulaires par les utilisateurs. Quel plan spécifique à choisir peut être ajusté en fonction des exigences réelles du projet et des exigences de sécurité. Espérons que les exemples ci-dessus peuvent fournir une référence pratique pour le développement de votre projet.