php黑名单白名单代码限制ip访问
限制某些网段
function getIP() {
return $_SERVER['REMOTE_ADDR'];
}
// 检查IP地址是否为中国大陆IP
//格式只能是网段,可以改进放单个ip
function isChineseIP($ip) {
$ip_ranges = array(
'58.250.0.0/16', // 电信
'113.100.0.0/16', // 联通
'221.0.0.0/8'// 移动
// 更多IP范围可以从 https://ipinfo.io/ 或其他服务添加
);
foreach ($ip_ranges as $range) {
if (ip_in_range($ip, $range)) {
return true;
}
}
return false;
}
// 检查IP是否在范围内
function ip_in_range($ip, $range) {
list($range, $netmask) = explode('/', $range);
$range = ip2long($range);
$ip = ip2long($ip);
$mask = -1 << (32 - $netmask);
$range &= $mask;
$ip &= $mask;
return $range === $ip;
}
//限制页html
$content = <<<EOD
<body id="tinymce" class="mce-content-body vsc-initialized" data-id="content" contenteditable="true" spellcheck="false">
<p style="text-align: center;" data-mce-style="text-align: center;">
<span style="color: rgb(224, 62, 45);" data-mce-style="color: #e03e2d;">
<img src="/cn.png" alt="">
<br data-mce-bogus="1">
</span>
</p>
<p style="text-align: center;" data-mce-style="text-align: center;">
<span style="color: rgb(224, 62, 45);" data-mce-style="color: #e03e2d;">我们检测到您在黑名单内禁止访问!</span></p>
<p></p>
<p></p>
</body>
EOD;
// 检查并限制访问
$ip = getIP();
/*
if (isChineseIP($ip)) {
header('HTTP/1.0 403 Forbidden');
exit($content);
}
*/
if (isChineseIP($ip) && strpos($_SERVER['REQUEST_URI'], '这里可以填排除的路径') === false) {
header('HTTP/1.0 403 Forbidden');
exit($content);//在黑名单内结束运行
}
// 正常的页面内容代码放这里
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';