在PHP中限制特定IP地址段访问页面,可以通过检查$_SERVER['REMOTE_ADDR']
变量来实现。以下是一个示例代码,展示了如何限制特定IP地址段访问页面:
<?php
// 定义禁止访问的IP地址段
$blockedIPRanges = [
'192.168.1.', // 禁止192.168.1.*的IP地址
'10.0.0.', // 禁止10.0.0.*的IP地址
'172.16.', // 禁止172.16.*.*的IP地址
];
// 获取当前访问者的IP地址
$visitorIP = $_SERVER['REMOTE_ADDR'];
// 检查IP地址是否在禁止列表中
foreach ($blockedIPRanges as $range) {
// 检查IP地址是否以指定范围开头
if (strpos($visitorIP, $range) === 0) {
// 如果IP地址在禁止列表中,终止访问
header("HTTP/1.1 403 Forbidden");
echo "Access denied for your IP address: " . $visitorIP;
exit;
}
}
// 如果IP地址不在禁止列表中,继续执行页面内容
echo "Welcome! Your IP address is: " . $visitorIP;
?>
代码解释:
-
定义禁止访问的IP地址段:
-
$blockedIPRanges
数组中存储了需要禁止访问的IP地址段。每个地址段以点号(.
)结尾,表示该段下的所有IP地址。
-
-
获取当前访问者的IP地址:
-
使用
$_SERVER['REMOTE_ADDR']
获取当前访问者的IP地址。
-
-
检查IP地址是否在禁止列表中:
-
使用
foreach
循环遍历$blockedIPRanges
数组,检查当前IP地址是否以某个禁止的地址段开头。 -
使用
strpos
函数检查IP地址是否以指定范围开头。如果strpos
返回0,表示IP地址以该范围开头。
-
-
终止访问:
-
如果IP地址在禁止列表中,发送403 Forbidden响应,并显示访问被拒绝的消息,然后终止脚本执行。
-
-
继续执行页面内容:
-
如果IP地址不在禁止列表中,继续执行页面的其他内容。
-
注意事项:
-
IP地址段的表示:确保IP地址段的表示方式正确,例如
192.168.1.
表示192.168.1.*
。 -
代理和负载均衡:如果您的服务器使用了代理或负载均衡,
$_SERVER['REMOTE_ADDR']
可能获取的是代理服务器的IP地址。在这种情况下,您可能需要使用$_SERVER['HTTP_X_FORWARDED_FOR']
来获取真实的客户端IP地址。 -
安全性:确保您的IP地址段列表是最新的,并且定期更新以适应变化的网络环境。