PHP开发        1500141817_242949.png       029fb7e6cf029f422610f4353e9b016e.png



php一分钟内限制ip访问次数参考代码

$ip = getip();
$ip = str_replace('.', '_', $ip);
$blackTxt = __DIR__ . '/black.txt';
if (!file_exists($blackTxt)) {
    file_put_contents($blackTxt, '');
}
$blackIps = file_get_contents($blackTxt);
if ($ip && $blackIps && strpos($blackIps, $ip) !== false) {
    @header("http/1.1 404 not found");
    @header("status: 404 not found");
    include("./404.html");
    die;
}
$ipDir = __DIR__ . '/ips';
if (!is_dir($ipDir)) {
    mkdir($ipDir);
}
$ipFile =  $ip . '.txt';
if (!file_exists($ipDir . '/' . $ipFile)) {
    file_put_contents($ipDir . '/' . $ipFile, json_encode(['start_time'=>time(), 'num'=>1, 'end_time'=>time()]));
}

$ipCheck = file_get_contents($ipDir . '/' . $ipFile);
if ($ipCheck) {
    $ipCheck = json_decode($ipCheck, 1);
    if ($ipCheck['num'] >= 3) {
        if ($ipCheck['end_time'] - $ipCheck['start_time'] < 60) {
            //1分钟内超过3次,写入黑名单
            file_put_contents($blackTxt, $ip);
            //清空文件
            unlink($ipDir . '/' . $ipFile);
        } else {
            //重置
            file_put_contents($ipDir . '/' . $ipFile, json_encode(['start_time'=>time(), 'num'=>1, 'end_time'=>time()]));
        }
    } else {
        $ipCheck['num'] += 1;
        $ipCheck['end_time'] = time();
        file_put_contents($ipDir . '/' . $ipFile, json_encode($ipCheck));
    }
}


  PHP

Aplum

作者  :  Aplum

我依然是我,但不是从前的那个我



评论


关于我

关于我

我不想成为一个庸俗的人。十年百年后,当我们死去,质疑我们的人同样死去,后人看到的是裹足不前、原地打转的你,还是一直奔跑、走到远方的我?

广告

微信图片_20200614142017.jpg