php中禁止单个IP与ip段访问的代码小结


在PHP中,禁止单个IP或IP段访问通常可以通过检查客户端的IP地址来实现。这可以通过在脚本的开始部分添加一些条件判断来实现。以下是一些示例代码,展示了如何分别禁止单个IP和IP段访问。

### 禁止单个IP访问


<?php
// 假设要禁止的IP是 '192.168.1.1'
$forbiddenIP = '192.168.1.1';

// 获取客户端的IP地址
$clientIP = $_SERVER['REMOTE_ADDR'];

// 检查IP地址
if ($clientIP == $forbiddenIP) {
    // 禁止访问,可以重定向到错误页面或显示错误信息
    header('HTTP/1.0 403 Forbidden');
    echo 'Access Forbidden';
    exit; // 终止脚本执行
}

// 正常的脚本逻辑
echo 'Welcome to the website!';
?>

### 禁止IP段访问

禁止IP段访问稍微复杂一些,因为你需要检查IP地址是否在指定的范围内。这通常可以通过将IP地址转换为数字(使用`ip2long`函数)并比较这些数字来实现。但是,为了简化,这里给出一个使用IP地址段(CIDR表示法)的示例,这通常需要使用额外的库,因为PHP本身不直接支持CIDR。但为了保持简洁,我们可以手动检查一个IP段(以起始和结束IP表示):


<?php
// 假设要禁止的IP段是从 '192.168.1.1' 到 '192.168.1.10'
$forbiddenStartIP = ip2long('192.168.1.1');
$forbiddenEndIP = ip2long('192.168.1.10');

// 获取客户端的IP地址并转换为长整型
$clientIPLong = ip2long($_SERVER['REMOTE_ADDR']);

// 检查IP地址是否在禁止范围内
if (($clientIPLong >= $forbiddenStartIP) && ($clientIPLong <= $forbiddenEndIP)) {
    // 禁止访问
    header('HTTP/1.0 403 Forbidden');
    echo 'Access Forbidden';
    exit;
}

// 正常的脚本逻辑
echo 'Welcome to the website!';
?>

请注意,`ip2long`函数会将IPv4地址转换为一个长整型数字,这在比较IP地址时非常有用。然而,对于IPv6地址,你需要使用其他方法或库来处理。

这些示例提供了基本的框架,你可以根据自己的需求进行调整和扩展。