Maison > Questions et réponses > le corps du texte
Par exemple, si 5 balises sont générées en une minute, le message « Opérations fréquentes, veuillez entrer le code de vérification » s'affichera.
Comment dois-je y faire face ?
PHPz2017-05-27 17:44:53
C'est très pratique à implémenter en utilisant Redis. Une clé est utilisée pour stocker le nombre de soumissions si la clé est count.
Obtenez le compte de Redis à chaque fois que vous soumettez
Si le compte est vide, définissez la valeur du compte sur 1, définissez le délai d'attente sur une minute et soumettez normalement
Si la valeur du compteur n'est pas vide et est supérieure ou égale à 5, un message d'erreur sera signalé « L'opération est fréquente, veuillez entrer le code de vérification »
Si la valeur de comptage n'est pas vide et inférieure à 5, elle sera soumise normalement et la valeur de comptage sera augmentée de un.
曾经蜡笔没有小新2017-05-27 17:44:53
Enregistrez le temps de génération de chaque tag
Si la règle est que seulement 4 tags peuvent être générés en une minute, une erreur sera signalée pour le 5ème
Il suffit de comparer le 1er des 4 plus récents avant d'ajouter le 5ème. le temps de génération de chaque fois, par rapport à l'heure actuelle, est supérieur à 60 secondes ? Sinon, une erreur sera signalée.
怪我咯2017-05-27 17:44:53
Utilisez session pour enregistrer deux valeurs, l'une est le nombre de soumissions $count et l'autre est l'heure de soumission $time. ++$count==5 [Condition 1] est détecté à chaque fois qu'il est soumis. Si tel est le cas, time()-$time>=60 seconds [Condition 2] Si les deux conditions sont remplies, des opérations fréquentes seront demandées. seule la condition est remplie 1 alors $count=0;$time=time();
世界只因有你2017-05-27 17:44:53
Il est recommandé d'utiliser l'opération de cache Redis
<?php
try {
$redis = new Redis(); // 创建实例
$redis->connect(REDIS_HOST, REDIS_PORT, REDIS_TIMEOUT); // 连接
$redis->ping(); // 确认连接已经成功
} catch (Exception $e) {
die('Can not connect Redis.');
}
$incrkey = 'TEST:用户:分钟'; // 每分钟缓存key
$incrValue = $redis->incr($incrkey);
if ($incrValue == 1) {
// 设定缓存时间(键名,缓存时间[单位:秒])
$redis->expire($incrkey, 60);
} else if ($incrValue >= 5) {
die('操作频繁,请输入验证码');
}