例如,我希望阻止基本89.95(89.95 .)的每个IP .我的.htaccess服务器上没有文件,因此我必须使用PHP.
if ($_SERVER['REMOTE_ADDR'] == "89.95.25.37") die();
Run Code Online (Sandbox Code Playgroud)
会阻止特定的IP.如何阻止整个IP块?
非常感谢你.
Tyl*_*ter 13
尝试 strpos()
if(strpos($_SERVER['REMOTE_ADDR'], "89.95") === 0)
{
die();
}
Run Code Online (Sandbox Code Playgroud)
如果您注意到,===操作员确保它位于IP地址89.95的开头.这意味着您可以根据需要分配尽可能多的IP地址,并且无论后面的数字是什么,它都会阻止.
例如,所有这些都将被阻止:
89.95 - > 89.95.12.34,89.95.1234.1,89.95.1.1
89.95.6 - > 89.95.65.34,89.95.61.1,89.95.6987
(其中一些不是有效的IP地址)
使用ip2long()以点分十进制转换为真实IP地址。然后你可以很容易地做范围。
只需ip2long()在高低范围内获取值,然后将它们用作代码中的常量。
如果您熟悉子网掩码,您可以这样做:
// Deny 10.12.*.*
$network = ip2long("10.12.0.0");
$mask = ip2long("255.255.0.0");
$ip = ip2long($_SERVER['REMOTE_ADDR']);
if (($network & $mask) == ($ip & $mask)) {
die("Unauthorized");
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您熟悉这种格式10.12.0.0/16:
// Deny 10.12.*.*
$network = ip2long("10.12.0.0");
$prefix = 16;
$ip = ip2long($_SERVER['REMOTE_ADDR']);
if ($network >> (32 - $prefix)) == ($ip >> (32 - $prefix)) {
die("Unauthorized");
}
Run Code Online (Sandbox Code Playgroud)
您可以将这些转换为函数并拥有非常易于管理的代码,从而可以轻松添加 IP 地址和自定义范围。
| 归档时间: |
|
| 查看次数: |
23495 次 |
| 最近记录: |