本文是:1分钟内某IP访问超过50次后,60s内不可继续访问,60s后可继续访问,重复些动作。 Cache::set(变量名,数组或字符串,缓存时间) 变量名:定义存该数组或字符串的命名 缓存时间:单位为秒,触发条件后,会在这个设置的时间内不能继续访问。
已再次优化,解决了保存时间会动态变化导致不准的情况
可直接利用缓存进行处理。
文件路径:app/thinkphp/start.php
namespace think;
use think\Request;
require __DIR__ . '/base.php';
$request = Request::instance();//实例化请求
$ip = $request->ip();//获取IP
$cacheKey = md5($ip);//并进行md5加密。
$cacheKey_arr = Cache::get($cacheKey);//获取缓存里的对应变量名的数组
// print_r($cacheKey_arr);//测试时使用
$now_time = time();
$key_arr['key'] = $cacheKey;
$count_num = 50;//限制访问的次数
$time_long = 60;//限制为多少秒内访问的次数时间
if(empty($key_arr))//为空时,是没有count与time记录的
{
$key_arr['count'] = 1;//设置访问次数为1次。
$key_arr['time'] = $now_time;//这里存放开始的时间
}
else
{
$count = $cacheKey_arr['count'];//存在数组里的访问次数