假设我有以下IP范围,希望阻止89.96.53.158和89.96.53.189
这就是我想要实现的。
我的问题:按照下面的代码,这是最好的方法吗?下面是它的编码吗?
$ip = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR']));
$start_ip = sprintf('%u', ip2long("89.96.53.158"));
$end_ip = sprintf('%u', ip2long("89.96.53.189"));
// stop only ip range between 89.96.53.158 - 89.96.53.189
if ($ip >= $start_ip && $ip <= $end_ip) {
echo "you cannot access our site";
exit();
}我还可以使用strpos()函数实现这一点吗?
发布于 2019-05-04 21:04:15
是的,我想出了用strpos()方法做这件事的另一种方法
if(strpos($_SERVER['REMOTE_ADDR'], "89.96") === 0)
{
echo "you cannot access our site";
exit();
}如果您注意到,===运算符确保89.96位于IP地址的开头。这意味着您可以根据需要指定任意数量的IP地址,并且不管后面出现什么数字,它都会被阻塞。
https://stackoverflow.com/questions/55986065
复制相似问题