php - Vous ne pouvez pas soumettre plusieurs fois dans un délai fixe ?
仅有的幸福
仅有的幸福 2017-05-27 17:42:53
0
4
712

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 ?

仅有的幸福
仅有的幸福

répondre à tous(4)
PHPzhong

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

  1. 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

  2.  ;
  3. 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 »

  4.  ;
  5. 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.

曾经蜡笔没有小新

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.

刘奇

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();

世界只因有你

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('操作频繁,请输入验证码');
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal