php刷新过于频繁自动加ip黑名单
- <?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 . "\r\n", $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) && !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 . 'forbided_ip.log', $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);
- ?>
解压密码: detechn或detechn.com
免责声明
本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。
本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。