Maison  >  Article  >  développement back-end  >  PHP anti-shake et anti-duplicate submit : améliorez l'efficacité des opérations des utilisateurs

PHP anti-shake et anti-duplicate submit : améliorez l'efficacité des opérations des utilisateurs

WBOY
WBOYoriginal
2023-10-12 12:36:221397parcourir

PHP 防抖和防重复提交:提升用户操作的效率

Soumission PHP Anti-Shake et Anti-Duplicate : pour améliorer l'efficacité des opérations des utilisateurs, des exemples de code spécifiques sont nécessaires

Avec la popularité d'Internet et le développement de la technologie, de plus en plus de personnes commencent à utiliser divers sites Web et applications à des fins diverses, telles que la soumission de formulaires, l'envoi de demandes, etc. Cependant, dans ce processus, nous rencontrons souvent certains problèmes, tels que des utilisateurs qui cliquent fréquemment sur des boutons, ce qui entraîne des soumissions répétées de formulaires, ou des requêtes fréquentes envoyées lors d'une interaction frontale, entraînant une pression accrue sur le serveur. Afin d'améliorer l'efficacité des opérations des utilisateurs, nous devons utiliser certains moyens techniques pour résoudre ces problèmes, parmi lesquels l'anti-tremblement et l'anti-répétition sont des solutions courantes.

1. Anti-shake

Anti-shake est une technologie qui réduit le nombre de déclencheurs en retardant l'exécution ou en fusionnant des opérations consécutives lorsque l'utilisateur opère fréquemment. Par exemple, nous avons un champ de recherche sur la page Web lorsque l'utilisateur saisit rapidement et continuellement, nous espérons pouvoir effectuer une recherche après que l'utilisateur ait arrêté de taper pendant un certain temps, au lieu de déclencher une demande de recherche à chaque fois qu'il saisit. Cela peut réduire le nombre de demandes inutiles et améliorer l’expérience utilisateur.

En PHP, nous pouvons obtenir un effet anti-secousse en utilisant une minuterie. Voici un exemple de code :

function debounceSearch($keywords) {
    // 保存上一次触发搜索的定时器 ID
    static $timer = null;

    // 清除上一次的延时操作
    if ($timer) {
        clearTimeout($timer);
    }

    // 创建新的延时操作
    $timer = setTimeout(function() use ($keywords) {
        // 这里是实际的搜索逻辑
        searchKeywords($keywords);
    }, 500); // 延时 500ms
}

// 在表单或输入框的事件监听中调用 debounceSearch 函数即可实现防抖

Dans le code ci-dessus, nous utilisons une variable statique $timer pour enregistrer le dernier ID de minuterie qui a déclenché la recherche. Lorsque l'utilisateur entre, déterminez d'abord s'il existe une opération retardée précédente. Si tel est le cas, effacez d'abord la dernière opération retardée, puis créez une nouvelle opération retardée. Cela garantit que l'utilisateur arrête de taper pendant un certain temps avant de rechercher. $timer 来保存上一次触发搜索的定时器 ID。当用户输入时,首先判断是否有上一次的延时操作,如果有,则先清除上一次的延时操作,然后再创建新的延时操作。这样就能保证用户停止输入一段时间后才进行搜索。

二、防重复提交

防重复提交是一种在用户提交表单或发送请求时,通过一些方法来避免重复提交的技术。比如用户在网页上点击提交按钮后,如果网络较慢或者用户不小心多次点击按钮,就可能导致同一个表单被提交多次。为了避免这种情况的发生,我们可以在后台进行一些处理来阻止重复提交。

在 PHP 中,我们可以通过使用 token 来防止重复提交。下面是一个示例代码:

function verifyToken($token) {
    // 检查 token 是否有效,可以从 Session 或者数据库中获取相应的 token 进行比对
    if ($token == $_SESSION['token']) {
        // token 有效
        return true;
    } else {
        // token 无效
        return false;
    }
}

function processForm($data, $token) {
    // 首先检查 token 是否有效
    if (!verifyToken($token)) {
        // token 无效,则认为是重复提交,直接返回
        return;
    }

    // 这里是实际的表单处理逻辑
    doSomething($data);

    // 处理完成后,清除 token,避免同一个表单被重复提交
    unset($_SESSION['token']);
}

// 在表单提交前生成 token,并保存到 Session 或者数据库中
// 将 token 输出到表单中的隐藏字段或者 URL 参数中

上面的代码中,我们首先定义了一个 verifyToken 函数,用来检查给定的 token 是否有效。然后在 processForm 函数中,先调用 verifyToken

2. Soumission anti-doublon

La soumission anti-doublon est une technologie qui utilise certaines méthodes pour éviter les soumissions répétées lorsque les utilisateurs soumettent des formulaires ou envoient des demandes. Par exemple, après qu'un utilisateur a cliqué sur le bouton d'envoi d'une page Web, si le réseau est lent ou si l'utilisateur clique accidentellement plusieurs fois sur le bouton, le même formulaire peut être soumis plusieurs fois. Pour éviter que cela ne se produise, nous pouvons effectuer un traitement en arrière-plan pour éviter les soumissions répétées.

En PHP, nous pouvons éviter les soumissions en double en utilisant des jetons. Voici un exemple de code :

rrreee

Dans le code ci-dessus, nous définissons d'abord une fonction verifyToken pour vérifier si le jeton donné est valide. Ensuite, dans la fonction processForm, appelez d'abord la fonction verifyToken pour vérifier si le jeton est valide. S'il n'est pas valide, il est considéré comme une soumission répétée et renvoyé directement ; s'il est valide, la logique de traitement du formulaire est exécutée et efface le jeton une fois le traitement terminé pour éviter que le même formulaire ne soit soumis à plusieurs reprises. 🎜🎜De cette façon, lorsque l'utilisateur soumet le formulaire, il nous suffit de vérifier la validité du jeton en arrière-plan, ce qui peut efficacement empêcher des soumissions répétées. 🎜🎜Résumé🎜🎜Grâce à des moyens techniques anti-secousses et anti-doublons de soumission, nous pouvons améliorer l'efficacité des opérations des utilisateurs, réduire les demandes inutiles et la pression du serveur et améliorer l'expérience utilisateur. En PHP, nous pouvons utiliser des minuteries pour obtenir un anti-secousse et des jetons pour empêcher les soumissions répétées. Ce qui précède n'est qu'une des deux solutions. En fonction des besoins et des circonstances réels, nous pouvons choisir une méthode appropriée pour résoudre le problè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