首页 » 收集 » 正文内容
PHP防止恶意频繁刷新,自动加ip黑名单禁止访问
寻梦xunm| 1.3K+| 收集
3年前
超过1096天 温馨提示
本文最后更新于2021年09月20日,已超过1096天没有更新,若内容或图片失效,请留言反馈。

065c4a05bd7a600cd5c15270e414df56.png
代码如下:
[hide]

<?php
$ip = get_client_ip_extend();//获取当前访问者的ip
$logFilePath = '/ippath/';//日志记录文件保存目录
$fileht = '.htaccess2';//被禁止的ip记录文件
$allowtime = 60;//防刷新时间
$allownum = 10;//防刷新次数
$allowRefresh = 120;//在允许刷新次数之后加入禁止ip文件中
if (!file_exists($fileht)) {
    file_put_contents($fileht, '');
}
$filehtarr = @file($fileht);
if (in_array($ip . &quot;\r\n&quot;, $filehtarr)) {
    $message = '警告:你的IP已经被禁止了!';
    if ($type === 'API') {
        return $message;
    }
    $this->error($message);
}
//加入禁止ip
$time = time();
$fileforbid = $logFilePath . 'forbidchk.dat';
if (file_exists($fileforbid)) {
    if ($time - filemtime($fileforbid) > 30) {
        @unlink($fileforbid);
    } else {
        $fileforbidarr = @file($fileforbid);
        if ($ip == substr($fileforbidarr[0], 0, strlen($ip))) {
            if ($time - substr($fileforbidarr[1], 0, strlen($time)) > 120) {
                @unlink($fileforbid);
            } else if ($fileforbidarr[2] > $allowRefresh) {
                file_put_contents($fileht, $ip . "rn", FILE_APPEND);
                @unlink($fileforbid);
            } else {
                $fileforbidarr[2]++;
                file_put_contents($fileforbid, $fileforbidarr);
            }
        }
    }
}
//防刷新
$str = '';
$file = $logFilePath . 'ipdate.dat';
if (!file_exists($logFilePath) &amp;&amp; !is_dir($logFilePath)) {
    mkdir($logFilePath, 0777);
}
if (!file_exists($file)) {
    file_put_contents($file, '');
}
$uri = $_SERVER['REQUEST_URI'];//获取当前访问的网页文件地址
$checkip = md5($ip);
$checkuri = md5($uri);
$yesno = true;
$ipdate = @file($file);
foreach ($ipdate as $k => $v) {
    $iptem = substr($v, 0, 32);
    $uritem = substr($v, 32, 32);
    $timetem = substr($v, 64, 10);
    $numtem = substr($v, 74);
    if ($time - $timetem < $allowtime) {
        if ($iptem != $checkip) {
            $str .= $v;
        } else {
            $yesno = false;
            if ($uritem != $checkuri) {
                $str .= $iptem . $checkuri . $time . "rn";
            } else if ($numtem < $allownum) {
                $str .= $iptem . $uritem . $timetem . ($numtem + 1) . "rn";
            } else {
                if (!file_exists($fileforbid)) {
                    $addforbidarr = array($ip . "rn", time() . "rn", 1);
                    file_put_contents($fileforbid, $addforbidarr);
                }
                file_put_contents($logFilePath . &#39;forbided_ip.log&#39;, $ip . '--' . date('Y-m-d H:i:s', time()) . '--' . $uri . "rn", FILE_APPEND);
                //$timepass = $timetem + $allowtime - $time;
                $message = '警告:不要刷新的太频繁!';
                if ($type === 'API') {
                    return $message;
                }
                $this->error($message);
            }
        }
    }
}
if ($yesno) {
    $str .= $checkip . $checkuri . $time . "rn";
}
file_put_contents($file, $str);
?>

[/hide]

0 赞 or 打赏
喜欢就打赏一点
微信 支付宝
  1. 123的头像
    123

    2年前 . LV.0

    这个平了?

    Windows Chrome 欧盟
    1. 寻梦xunm的头像
      寻梦xunm

      2年前 . LV.0

      @123

      不懂什么意思

      Windows 火狐浏览器 重庆市
  2. 123456的头像
    123456

    2年前 . LV.0

    加油

    Windows Chrome 广东省湛江市
  3. 11的头像
    11

    2年前 . LV.0

    加油

    Windows Chrome 广东省深圳市
隐私
Q Q:1340326824
邮箱:vipshiyi@qq.com
QQ群:422720328

我的音乐