比如,如果一分钟之内生成5个标签,提示“操作频繁,请输入验证码”。
应该怎么处理?
这个使用redis实现很方便,使用一个key来存储提交次数,假如key为count。每次提交时从redis取出count
如果count为空,将count值设为1,超时时间设为一分钟,正常提交;
如果count值不为空且大于等于5则报错提示“操作频繁,请输入验证码”;
如果count值不为空且小于5,则正常提交,count值加一。
记录一下,每个标签的生成时间 如果规则是,一分钟内只能生成 4 个标签,第 5 个就提示报错只需要在 增加第 5 个之前,比较最近的 4 个中的第 1 个的生成时间,跟当下时间,是不是大于 60 秒,如果不是就报错。
用session记录两个值,一个是提交次数$count,一个是提交时间$time。每次提交时候都检测++$count==5[条件1],如果是则time()-$time>=60秒[条件2],两种条件都满足则提示操作频繁,如果只满足条件1则$count=0;$time=time();
建议用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('操作频繁,请输入验证码'); }
这个使用redis实现很方便,使用一个key来存储提交次数,假如key为count。
每次提交时从redis取出count
如果count为空,将count值设为1,超时时间设为一分钟,正常提交;
如果count值不为空且大于等于5则报错提示“操作频繁,请输入验证码”;
如果count值不为空且小于5,则正常提交,count值加一。
记录一下,每个标签的生成时间
如果规则是,一分钟内只能生成 4 个标签,第 5 个就提示报错
只需要在 增加第 5 个之前,比较最近的 4 个中的第 1 个的生成时间,跟当下时间,是不是大于 60 秒,如果不是就报错。
用session记录两个值,一个是提交次数$count,一个是提交时间$time。每次提交时候都检测++$count==5[条件1],如果是则time()-$time>=60秒[条件2],两种条件都满足则提示操作频繁,如果只满足条件1则$count=0;$time=time();
建议用redis缓存操作