Maison >développement back-end >tutoriel php >Principes et applications de la technologie PHP anti-shake et anti-duplicata de soumission

Principes et applications de la technologie PHP anti-shake et anti-duplicata de soumission

WBOY
WBOYoriginal
2023-10-12 12:16:411262parcourir

PHP 防抖和防重复提交技术的原理与应用

Principe et application de la technologie PHP anti-shake et anti-re-soumission

Avec le développement d'Internet, les utilisateurs cliquent souvent fréquemment ou soumettent à nouveau lors de l'exploitation de pages Web, ce qui entraînera certains problèmes au système. charges et risques pour la sécurité. Pour résoudre ce problème, les développeurs emploient souvent des techniques de soumission anti-tremblement et anti-doublon. Cet article présentera les principes de la technologie de soumission anti-shake et anti-duplicata en PHP et donnera des exemples de code correspondants.

1. Principe et application de la technologie anti-shake

La technologie anti-shake vise à résoudre le problème des clics ou opérations fréquents des utilisateurs et atteint l'objectif de réduire les requêtes invalides en retardant l'exécution ou en fusionnant plusieurs opérations. Son principe repose principalement sur la fonction et la fermeture setTimeout de Javascript.

1.1 Principe

Lorsque l'utilisateur effectue des clics fréquents, nous pouvons utiliser la fonction setTimeout pour retarder l'exécution de la fonction. Si l'événement est à nouveau déclenché dans le délai imparti, la minuterie précédente sera effacée et le chronométrage recommencera. . Ce n'est que lorsque l'utilisateur arrête de fonctionner pendant un certain temps que la fonction d'exécution est réellement déclenchée.

1.2 Application

Dans les projets PHP, la technologie anti-shake peut être implémentée via du code JS frontal. Les étapes spécifiques sont les suivantes :

Étape 1 : Introduire la bibliothèque jQuery ou la bibliothèque JS auto-implémentée dans la page.

Étape 2 : Écrivez la fonction anti-shake, comme indiqué ci-dessous :

function debounce(func, delay) {
  let timer = null;
  return function() {
    clearTimeout(timer);
    timer = setTimeout(function() {
      func.apply(this, arguments)
    }, delay);
  }
}

Étape 3 : Appelez la fonction anti-shake, comme indiqué ci-dessous :

$('button').click(debounce(function() {
  // 处理点击事件的业务逻辑
}, 1000));

2. Le principe et l'application de la technologie de soumission anti-doublon

La technologie de soumission anti-doublon est utilisée. Résolvez le problème des utilisateurs qui soumettent des formulaires à plusieurs reprises, principalement en générant des jetons d'identification uniques. Le principe peut être divisé en deux parties : le front-end génère le token, et le back-end vérifie le token.

2.1 Le front-end génère un jeton

Avant que l'utilisateur ne soumette le formulaire, le front-end générera un jeton unique et le stockera dans sessionStorage ou dans un cookie. La manière de générer des jetons peut passer par des algorithmes de cryptage ou des nombres aléatoires.

function generateToken() {
  var token = ''; 
  // 生成唯一不重复的token的逻辑代码
  return token;
}

Transmettez le jeton comme valeur du champ caché au backend avant que le formulaire ne soit soumis.

<form action="submit.php" method="post">
  <input type="hidden" name="token" value="<?php echo generateToken(); ?>">
  <!-- 表单的其他控件 -->
  <input type="submit" value="提交">
</form>

2.2 Jeton de vérification du backend

Une fois que le backend a reçu la soumission du formulaire, le jeton doit être vérifié. Si la vérification du jeton réussit, la logique métier du formulaire est traitée et le jeton est effacé de sessionStorage ou des cookies pour éviter les soumissions répétées.

session_start();
$token = $_POST['token'];

if (isset($_SESSION['token']) && $_SESSION['token'] === $token) {
  // token验证通过
  unset($_SESSION['token']); // 清除token
  // 处理表单提交的业务逻辑
} else {
  // token验证失败,返回错误提示
}

3. Résumé

Cet article présente les principes et les applications de la technologie PHP anti-shake et anti-duplicata. La technologie anti-shake réduit l'envoi de requêtes invalides en retardant l'exécution ou en fusionnant les opérations. La technologie anti-soumission répétée empêche la soumission répétée de formulaires en générant des jetons pour garantir l'exactitude et la sécurité des données. Dans le développement réel, nous pouvons choisir les technologies appropriées à appliquer en fonction des besoins du projet afin d'améliorer les performances du système et l'expérience utilisateur.

Références :

  1. [Mécanisme anti-tremblement](https://www.jianshu.com/p/76bdffb2a268)
  2. [Comment empêcher la soumission de données en double dans un formulaire](https://segmentfault.com/a / 1190000017279731)

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:
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