改代码可以检测访问者的ip是否在允许访问的列表中,支持ip通配符
<?php
//当前访问的ip
$ip = isset($_SERVER["HTTP_X_FORWARDED_FOR"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:(isset($_SERVER["HTTP_CLIENT_IP"])?$_SERVER["HTTP_CLIENT_IP"]:$_SERVER["REMOTE_ADDR"]);
//允许访问的ip
$allow_ips = array(
"*.1.1.1", // 通配ip
"114.114.114.114",//精准ip
);
// 获取不到当前ip
if(!$ip){
header("HTTP/1.1 403 Forbidden");
die("Forbidden");
}
if(!checkip($allow_ips,$ip)) {
header("HTTP/1.1 403 Forbidden");
die("Forbidden");
}
echo '检测通过';
// 检测ip
function checkip($allow_ips,$ip)
{
// 空允许ip
if(0 == count($allow_ips)) {
return false;
}
//当前ip为空
if (0 == strlen($ip)) {
return false;
}
$ipArr = explode(".",$ip);
$ipPartLen = count($ipArr);
if($ipPartLen!=4) {
return false;
}
// 在允许ip中
if(in_array($ip,$allow_ips)) {
return true;
}
$checkPass = false;
//检测ip通配
foreach($allow_ips as $allow){
$allowArr = explode(".",$allow);
//长度不同
if(count($allowArr)!=$ipPartLen) {
continue;
}
$currentCheckPass = true;
foreach($ipArr as $k => $part)
{
//通配
if($allowArr[$k] == "*") {
continue;
}
//不同
if ($allowArr[$k] != $part) {
$currentCheckPass = false;
break;
}
}
//检测通过
if($currentCheckPass){
$checkPass = true;
break;
}
}
// 返回
return $checkPass;
}
?>
未经允许不得转载:飞飞侠淘客帮助中心 » php检测ip是否允许访问