禁止单个IP或ip段访问
//IP禁止判断接口,返回true则为找到 function checkIp($ip, $ipbanned) { $ipbannedFlag = false; if (!empty($ipbanned)) { foreach ($ipbanned as $data) { if (strpos($data, '*')) { $ip_min = convert_ip("min", $data); $ip_max = convert_ip("max", $data); $result = ipforbidden($ip, $ip_min, $ip_max); if ($result == 1) { //找到 $ipbannedFlag = true; break; } } else { if ($ip == $data) { //找到 $ipbannedFlag = true; break; } } } } return $ipbannedFlag; } function convert_ip($op, $ip) { $arr_ip = explode(".", $ip); $arr_temp = array(); $i = 0; $result = ''; $ip_val = $op == "max" ? "255" : "1"; foreach ($arr_ip as $key => $val) { $i++; $val = $val == "*" ? $ip_val : $val; $arr_temp[] = $val; } for ($i = 4 - $i; $i > 0; $i--) { $arr_temp[] = $ip_val; } $comma = ""; foreach ($arr_temp as $v) { $result .= $comma . $v; $comma = "."; } return $result; } //判断IP是否被限并返回 function ipforbidden($ip, $ip_from, $ip_to) { $from = strcmp(ip2long($ip), ip2long($ip_from)); $to = strcmp(ip2long($ip), ip2long($ip_to)); if ($from >= 0 && $to <= 0) { return 1; } else { return 0; } }
//使用方法 $ipbanned = [ '61.135.165.*', '61.135.186.*', '127.0.0.1', ]; $user_ip = '127.0.0.1'; $result = checkIp($user_ip, $ipbanned); if ($result) exit('禁止访问');
分类:
PHP&mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程