Avec la popularité des applications Internet, il devient de plus en plus courant pour les utilisateurs de soumettre fréquemment des demandes ou des formulaires sur des sites Web ou des applications. Les clics et les soumissions fréquents affectent non seulement l'expérience utilisateur, mais peuvent également entraîner une charge accrue du serveur. Afin d'éviter ces problèmes et d'améliorer l'efficacité opérationnelle, les technologies de soumission anti-chiots et anti-répétitions ont émergé.
Anti-Shake est une technique qui combine des événements de déclenchement continu des utilisateurs en retardant l'exécution des opérations pour réduire les demandes non valides. Par exemple, lorsqu'un utilisateur entre en continu dans la zone de recherche, nous ne voulons généralement pas que chaque entrée déclenche une demande de recherche, mais effectuez plutôt la recherche après que l'utilisateur arrête l'entrée pendant un certain temps.
Dans PHP, des effets anti-titulades similaires peuvent être simulés. Le code suivant montre comment utiliser les variables statiques pour enregistrer la minuterie pour retarder l'exécution de la logique de recherche:
function debounceSearch($keywords) {
// Enregistrer la minuterie qui a déclenché la recherche la dernière fois ID
static $timer = null;
// Effacer la dernière opération de retard
if ($timer) {
clearTimeout($timer);
}
// Créer une nouvelle opération de retard
$timer = setTimeout(function() use ($keywords) {
// Voici la logique de recherche réelle
searchKeywords($keywords);
}, 500); // Retard 500ms
}
Dans les projets réels, cette fonction peut être appelée dans la surveillance des événements de la zone d'entrée pour atteindre l'entrée anti-chahut pour éviter le déclenchement multiple des demandes de recherche dans un court laps de temps.
La soumission anti-répétée est principalement utilisée pour empêcher les utilisateurs de cliquer plusieurs fois sur le bouton Soumettre en raison de retard ou d'une mauvaise opération du réseau lors de la soumission d'un formulaire, ce qui a provoqué à plusieurs reprises le même formulaire. Une pratique courante consiste à utiliser un jeton unique pour vérifier le caractère unique de la demande.
L'exemple suivant montre comment implémenter les soumissions en double en validant les jetons:
function verifyToken($token) {
// examiner token Est-ce valable ou non,Généralement à partir de Session Ou comparer dans la base de données
if ($token == $_SESSION['token']) {
// token efficace
return true;
} else {
// token invalide
return false;
}
}
function processForm($data, $token) {
// Vérifiez d'abord token
if (!verifyToken($token)) {
// token invalide,Considéré comme une soumission en double,Retourner directement
return;
}
// Voici la logique de traitement de formulaire réelle
doSomething($data);
// Effacer une fois le traitement terminé token,Évitez les soumissions répétées
unset($_SESSION['token']);
}
Utilisez cette méthode pour générer un jeton unique avant de soumettre le formulaire et enregistrer à la session. Vérifiez le jeton lors de la soumission pour vous assurer que le formulaire n'est traité qu'une seule fois.
Grâce à la technologie de soumission anti-tirage et anti-répétition, l'expérience d'exploitation des utilisateurs peut être efficacement améliorée, les demandes inutiles et le traitement de la duplication de données peuvent être évitées et la pression du serveur peut être réduite. Dans les applications PHP, l'anti-titulaire peut être obtenu en utilisant le mécanisme de la minuterie, et les soumissions anti-répétées peuvent être obtenues grâce à une vérification des jetons. Selon les besoins réels, le choix de la bonne solution flexible est la clé pour optimiser l'interaction utilisateur.