Position actuelle: Accueil> Derniers articles> PHP Anti-Shake and Anti-Repetition Soumission Mest Practices: Améliorer la sécurité et les performances de la forme

PHP Anti-Shake and Anti-Repetition Soumission Mest Practices: Améliorer la sécurité et les performances de la forme

gitbox 2025-08-05

Explication détaillée de la technologie de soumission anti-tis et anti-répétition dans PHP

Dans le développement quotidien Web, afin d'optimiser l'expérience utilisateur et d'améliorer la stabilité du système, les développeurs doivent souvent faire face aux soumissions répétées de formulaires ou aux opérations des utilisateurs fréquents. Les technologies de soumission anti-titulaire et anti-répétition sont des moyens clés pour résoudre ces problèmes.

Principes et applications de la technologie anti-titulaire

Le soi-disant anti-tirage signifie que lorsqu'une opération est déclenchée à une fréquence élevée, l'opération n'est effectuée que dans un retard après le dernier déclencheur pour éviter l'exécution répétée en peu de temps.

Bien que nous n'écoutons pas directement des événements comme JavaScript dans PHP back-end, nous pouvons également réaliser des effets similaires grâce à un jugement logique et à un contrôle de retard. Voici un exemple de code qui simule le mécanisme anti-kake PHP:

<?php
class Debounce
{
    private $callback;
    private $delay;
    private $timer;

    public function __construct($callback, $delay)
    {
        $this-> callback = $ callback;
        $ this-> delay = $ delay;
    }

    fonction publique Debounce ()
    {
        if ($ this-> temporisateur) {
            ClearTimeout ($ this-> temporisateur);
        }

        $ this-> timer = setTimeout ($ this-> rappel, $ this-> retard);
    }
}

// Exemple d&#39;utilisation $ Debounce = new Debounce (function () {
    // effectuer l&#39;opération demandée}, 1000);

// Appelez la méthode Debounce () $ Debounce-> Debounce () lorsque l&#39;événement est déclenché;
?>

Il convient de noter que PHP lui-même n'a pas les fonctions de surveillance des événements côté navigateur, Settimeout et ClearTimeout. Le Settimeout dans l'exemple est une idée de simulation, qui convient plus à la transmission vers l'avant ou à l'utilisation du contrôle JavaScript pour atteindre l'anti-titulaire.

Solutions pour empêcher les soumissions en double

Les soumissions anti-répétées sont plus couramment utilisées pour traiter les soumissions de formulaires que l'anti-titulaire. Une pratique courante consiste à introduire un jeton de forme unique (jeton) pour vérifier qu'il s'agit de la première soumission au moment de la soumission.

Voici un exemple complet de mise en œuvre de la validation PHP anti-répétition:

<?php
class FormToken
{
    private $token;

    public function __construct()
    {
        if (!isset($_SESSION['token'])) {
            $_SESSION['token'] = bin2hex(random_bytes(32));
        }

        $this-> token = $ _Session [&#39;token&#39;];
    }

    Fonction publique GenerateToken ()
    {
        retour &#39; <input type="hidden" name="token" value="' . $this->token . '"> &#39;;;
    }

    fonction publique validateToken ()
    {
        if (isset ($ _ post [&#39;token&#39;]) && $ _post [&#39;token&#39;] === $ this-> token) {
            // Effectuez l&#39;opération de soumission de formulaire} else {
            // demande illégale, donnant un message d&#39;erreur}
    }
}

// Exemple d&#39;utilisation $ formToken = new FormToken ();
echo $ formtoken-> generateToken ();
$ formtoken-> validateToken ();
?>

De cette façon, chaque soumission de formulaire sera accompagnée d'un identifiant unique et sera comparée du côté du serveur, évitant ainsi le traitement répété de la même demande.

Comment choisir la bonne solution technique

Dans le développement réel, bien que la soumission anti-titulaire et anti-répétition puisse éviter efficacement la mauvaise opération des utilisateurs, les scénarios applicables sont légèrement différents:

  • Anti-Shake convient aux événements fréquemment déclenchés par l'interface utilisateur, tels que les clics à bouton multiples, les déclencheurs de défilement, etc. principalement utilisés pour l'interaction frontale.
  • La soumission anti-répétée convient aux demandes sensibles telles que le traitement des données et le paiement du formulaire, et est principalement traité dans le backend.
  • Si le système nécessite une sécurité plus élevée, tels que les fonctions financières et liées aux données utilisateur, il est recommandé d'utiliser les deux à l'avant et à l'arrière.

Résumer

Grâce à la compréhension et à l'application pratique de la technologie de soumission anti-titulaire et anti-répétition, l'expérience utilisateur peut être efficacement améliorée et les ressources système peuvent être protégées contre les abus. Les développeurs doivent raisonnablement choisir ou combiner ces deux technologies en fonction des scénarios commerciaux pour obtenir un comportement système plus efficace et stable.