EZCX——限制非安全IP訪問
/**
* 安全IP檢測,支持IP段檢測
* @param string $ip 要檢測的IP
* @param string|array $ips 白名單IP或者黑名單IP
* @return boolean true 在白名單或者黑名單中,否則不在
*/
function
is_safe_ip(
$ip
=
""
,
$ips
=
""
){
if
(!
$ip
)
$ip
= get_client_ip();
//獲取客戶端IP
if
(
$ips
){
if
(
is_string
(
$ips
)){
//ip用"," 例如白名單IP:192.168.1.13,123.23.23.44,193.134.*.*
$ips
=
explode
(
","
,
$ips
);
}
}
else
{
//讀取后臺配置 白名單IP
$obj
=
new
Setting();
$ips
=
explode
(
","
,
$obj
->getConfig(
"whiteip"
));
}
if
(in_array(
$ip
,
$ips
)){
return
true;
}
$ipregexp
= implode(
'|'
,
str_replace
(
array
(
'*'
,
'.'
),
array
(
'\d+'
,
'\.'
) ,
$ips
));
$rs
= preg_match(
"/^("
.
$ipregexp
.
")$/"
,
$ip
);
if
(
$rs
)
return
true;
return
;
}
/**
* 獲取客戶端IP地址
* @param integer $type 返回類型 0 返回IP地址 1 返回IPV4地址數字
* @param boolean $adv 是否進行高級模式獲取(有可能被偽裝)
* @return mixed
*/
function
get_client_ip(
$type
= 0,
$adv
=false) {
$type
=
$type
? 1 : 0;
static
$ip
= NULL;
if
(
$ip
!== NULL)
return
$ip
[
$type
];
if
(
$adv
){
if
(isset(
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
])) {
$arr
=
explode
(
','
,
$_SERVER
[
'HTTP_X_FORWARDED_FOR'
]);
$pos
=
array_search
(
'unknown'
,
$arr
);
if
(false !==
$pos
) unset(
$arr
[
$pos
]);
$ip
= trim(
$arr
[0]);
}
elseif
(isset(
$_SERVER
[
'HTTP_CLIENT_IP'
])) {
$ip
=
$_SERVER
[
'HTTP_CLIENT_IP'
];
}
elseif
(isset(
$_SERVER
[
'REMOTE_ADDR'
])) {
$ip
=
$_SERVER
[
'REMOTE_ADDR'
];
}
}
elseif
(isset(
$_SERVER
[
'REMOTE_ADDR'
])) {
$ip
=
$_SERVER
[
'REMOTE_ADDR'
];
}
// IP地址合法驗證
$long
= sprintf(
"%u"
,
ip2long
(
$ip
));
$ip
=
$long
?
array
(
$ip
,
$long
) :
array
(
'0.0.0.0'
, 0);
return
$ip
[
$type
];
}
推薦文章
2025-01-18
2024-11-28
2024-11-09
2024-10-25
2024-06-25
2024-01-04
2023-11-06
2023-10-30
2023-10-13
2023-10-10
穩定
產品高可用性高并發貼心
項目群及時溝通專業
產品經理1v1支持快速
MVP模式小步快跑承諾
我們選擇聲譽堅持
10年專注高端品質開發