Maison  >  Article  >  développement back-end  >  Comparaison des principes de mise en œuvre et analyse des avantages et des inconvénients de la soumission PHP anti-shake et anti-duplicata

Comparaison des principes de mise en œuvre et analyse des avantages et des inconvénients de la soumission PHP anti-shake et anti-duplicata

王林
王林original
2023-10-12 10:30:53746parcourir

PHP 防抖和防重复提交的实现原理对比及优缺点分析

Comparaison PHP des principes de mise en œuvre et analyse des avantages et des inconvénients de la soumission anti-shake et anti-duplicata

Introduction :
Dans le développement Web, la soumission anti-shake et anti-duplicata sont des problèmes courants. Lorsque les utilisateurs déclenchent fréquemment un événement, nous espérons pouvoir contrôler la fréquence de déclenchement de l'événement. Le mécanisme anti-shake peut nous aider à réduire les demandes inutiles. D’un autre côté, empêcher les utilisateurs de soumettre le même formulaire plusieurs fois constitue également une considération de sécurité importante. Cet article présentera les principes de soumission anti-shake et anti-duplicata en PHP, ainsi que leurs avantages et inconvénients, et démontrera des exemples de code spécifiques.

1. Le principe de mise en œuvre de l'anti-secousse
Le principe de mise en œuvre du mécanisme anti-secousse est relativement simple. Lorsqu'un événement est déclenché, en réglant une minuterie, si l'événement est à nouveau déclenché dans le délai spécifié, la minuterie sera effacée et le chronométrage recommencera. La minuterie déclenchera l'événement normalement seulement après que l'événement ait cessé de se déclencher pendant un certain temps.

L'exemple de code est le suivant :

function debounce($callback, $delay) {
    $timer = null;
    return function() use ($callback, $delay, &$timer) {
        if ($timer) {
            clearTimeout($timer);
        }
        $timer = setTimeout($callback, $delay);
    };
}

// 调用示例
$debounceHandler = debounce(function() {
    // 处理具体逻辑
}, 1000);

// 触发事件
$debounceHandler();

Avantages :

  1. peut réduire efficacement la fréquence des requêtes et réduire la charge sur le serveur.

Inconvénients :

  1. L'événement ne sera déclenché que lorsqu'il cessera de se déclencher, et il y aura un certain délai.

2. Le principe de mise en œuvre de la soumission anti-doublon
La soumission anti-doublon signifie interdire la soumission répétée du même formulaire après que l'utilisateur a soumis le formulaire. Ceci peut être réalisé en générant et en enregistrant un jeton aléatoire. Lorsque l'utilisateur soumet le formulaire pour la première fois, un jeton unique est généré et enregistré dans la session. Chaque fois que le formulaire est soumis, nous vérifierons si le token existe dans la session. S'il existe, le formulaire a été soumis.

L'exemple de code est le suivant :

function preventDuplicateSubmission($callback) {
    session_start();
    $formToken = 'form_token_' . md5($_SERVER['REQUEST_URI']);
    
    if (isset($_POST['token']) && $_POST['token'] === $_SESSION[$formToken]) {
        echo '请勿重复提交表单';
        return;
    }

    $token = md5(microtime() . rand(0, 9999));
    $_SESSION[$formToken] = $token;
    $_POST['token'] = $token;

    $callback();
}

// 调用示例
preventDuplicateSubmission(function() {
    // 处理具体逻辑
});

Avantages :

  1. Il peut empêcher les utilisateurs de soumettre à plusieurs reprises le même formulaire, améliorant ainsi la sécurité du système.

Inconvénients :

  1. Le token doit être enregistré dans la session, ce qui augmente la charge sur le serveur.
  2. Un jeton unique doit être généré pour chaque formulaire, ce qui peut avoir un certain impact sur les performances.

3. Comparaison entre la soumission anti-shake et anti-duplicata
La soumission anti-shake et anti-duplicata visent toutes deux à améliorer les performances et la sécurité du système, mais les scénarios applicables et les principes de mise en œuvre sont différents.

  1. Scénarios applicables :

    • Anti-shake convient à la réduction des scénarios avec une fréquence de requête élevée, tels que les événements de saisie dans la zone de saisie, les changements de taille de fenêtre, etc.
    • La soumission anti-doublon convient aux scénarios dans lesquels le caractère unique de la soumission du formulaire doit être garanti, comme la soumission de commandes, la publication de commentaires, etc.
  2. Principe de mise en œuvre :

    • Des retards anti-secousse déclenchant des événements en réglant une minuterie pour garantir que l'événement ne sera pas exécuté tant qu'il n'arrêtera pas de se déclencher pendant un certain temps.
    • Les soumissions anti-répétées génèrent et enregistrent des jetons aléatoires et utilisent la session pour déterminer si le formulaire a été soumis.
  3. Avantages et inconvénients :

    • L'anti-shake peut réduire efficacement la fréquence des demandes, mais cela entraînera un certain retard.
    • Empêcher les soumissions répétées peut garantir l'unicité du formulaire, mais cela nécessite une charge accrue sur le serveur et a certains impacts sur les performances.

Conclusion :
La soumission anti-shake et anti-duplicata sont toutes deux des solutions aux problèmes courants de développement Web. Dans le développement réel, nous devons choisir la méthode appropriée en fonction du scénario spécifique. Si vous devez contrôler la fréquence des requêtes, vous pouvez utiliser l'anti-shake ; si vous devez garantir le caractère unique de la soumission du formulaire, vous pouvez utiliser la soumission anti-duplicata. Bien entendu, nous pouvons également utiliser ces deux méthodes combinées selon les besoins pour offrir une meilleure expérience utilisateur et une meilleure sécurité du système.

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