PHPz2017-05-27 17:44:53
這個使用redis實作很方便,使用一個key來儲存提交次數,假如key為count。
每次提交時從redis取出count
如果count為空,將count值設為1,超時時間設為一分鐘,正常提交;
如果count值不為空且大於等於5則報錯提示「操作頻繁,請輸入驗證碼」;
如果count值不為空且小於5,則正常提交,count值加一。
曾经蜡笔没有小新2017-05-27 17:44:53
記錄一下,每個標籤的生成時間
如果規則是,一分鐘內只能產生4 個標籤,第5 個就提示報錯
只需要在增加第5 個之前,比較最近的4 個中的第1個的生成時間,跟當下時間,是不是大於60 秒,如果不是就報錯。
怪我咯2017-05-27 17:44:53
用session記錄兩個值,一個是提交次數$count,一個是提交時間$time。每次提交時候都偵測++$count==5[條件1],如果是則time()-$time>=60秒[條件2],兩種條件都滿足則提示操作頻繁,如果只滿足條件1則$count=0;$time=time();
世界只因有你2017-05-27 17:44:53
建議用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('操作频繁,请输入验证码');
}