Maison >développement back-end >tutoriel php >PHP anti-shake et anti-duplicata submit : améliore la sécurité et la convivialité du système

PHP anti-shake et anti-duplicata submit : améliore la sécurité et la convivialité du système

WBOY
WBOYoriginal
2023-10-12 15:19:491210parcourir

PHP 防抖和防重复提交:提升系统的安全性和可用性

Soumission PHP Anti-shake et anti-duplicata : Pour améliorer la sécurité et la convivialité du système, des exemples de code spécifiques sont nécessaires

Introduction :
Avec le développement d'Internet, de plus en plus de systèmes adoptent le front-end Web technologie de développement, parmi laquelle PHP En tant que langage de développement back-end très populaire, il est largement utilisé dans diverses applications Web. Cependant, dans le développement réel, nous rencontrons souvent un problème : les utilisateurs cliquent fréquemment sur le bouton de soumission, provoquant le blocage du système ou des soumissions répétées, affectant ainsi la sécurité et la disponibilité du système. Afin de résoudre ce problème, cet article présentera les méthodes d'anti-shake et d'anti-resoumission en PHP, et fournira des exemples de code spécifiques.

1. Qu'est-ce que l'anti-shake et l'anti-soumission répétée

  1. anti-shake
    anti-shake signifie retarder l'exécution du code correspondant pendant un certain temps après que l'utilisateur a déclenché un événement. événement à nouveau pendant cette période, puis réinitialisez la minuterie et recommencez la synchronisation jusqu'à ce que l'utilisateur arrête de déclencher et exécute le code après le dernier déclenchement. L'anti-tremblement peut empêcher efficacement les utilisateurs de déclencher fréquemment le même événement, provoquant ainsi une congestion du système.
  2. Soumission anti-répétée
    Soumission anti-répétée signifie qu'après que l'utilisateur a soumis un formulaire ou effectué une opération importante, le système juge efficacement l'opération de l'utilisateur, si l'utilisateur soumet à plusieurs reprises le même formulaire ou effectue la même opération, il l'interceptera. Empêcher l'insertion répétée de données ou l'exécution répétée d'opérations.

2. Comment implémenter l'anti-shake et la soumission anti-répétitive

  1. Comment implémenter l'anti-shake
    La méthode d'implémentation de l'anti-shake est relativement simple et peut être implémentée via une minuterie JavaScript. Voici un exemple de code simple pour implémenter l'anti-shake :
// 定义一个全局的定时器变量
var timer = null;

function debounce(func, delay) {
    // 清除上一次的定时器
    if (timer) {
        clearTimeout(timer);
    }
    // 创建一个新的定时器
    timer = setTimeout(func, delay);
}

// 使用防抖函数,在用户输入文本框后1秒钟后才触发输入事件
var input = document.getElementById('input');
input.addEventListener('input', function() {
    debounce(function() {
        // 执行输入事件的处理函数
    }, 1000);
});
  1. Méthode d'implémentation de soumission anti-répétée
    La méthode d'implémentation de soumission anti-répétée doit être traitée côté serveur. Une méthode courante consiste à utiliser Token pour vérifier si. soumissions répétées. Le processus de mise en œuvre spécifique est le suivant :
// 生成一个唯一的Token,并将其保存在Session中
function generateToken() {
    $token = md5(uniqid(rand(), true));
    $_SESSION['token'] = $token;
    return $token;
}

// 判断提交的Token是否有效
function isTokenValid($token) {
    if (isset($_SESSION['token']) && $token === $_SESSION['token']) {
        unset($_SESSION['token']);
        return true;
    }
    return false;
}

// 在表单中添加一个隐含的Token字段
function addTokenToForm() {
    $token = generateToken();
    echo '<input type="hidden" name="token" value="'.$token.'">';
}

// 在服务器端验证Token
function validateToken() {
    if (!empty($_POST['token']) && isTokenValid($_POST['token'])) {
        // 执行表单提交的操作
    } else {
        // Token无效,返回错误信息
    }
}

// 在页面中添加表单,并添加Token字段
echo '<form action="submit.php" method="post">';
addTokenToForm();
// 添加其他表单字段
echo '<input type="submit" name="submit" value="提交">';
echo '</form>';

// 在表单提交的处理页面中验证Token
validateToken();

3. Résumé
Grâce aux méthodes de mise en œuvre de soumission anti-tremblement et anti-répétition, la sécurité et la convivialité du système peuvent être efficacement améliorées. Dans le développement réel, différentes méthodes anti-tremblement et anti-resoumission peuvent être sélectionnées en fonction de différents besoins et mises en œuvre via des exemples de code spécifiques. Grâce à cette amélioration de la sécurité et de la convivialité, le fonctionnement normal du système et la bonne expérience utilisateur peuvent être mieux assurés.

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