REMOTE_ADDR 是你的客戶端跟你的服務器“握手”時候的IP,如果使用了“匿名代理”,REMOTE_ADDR將顯示代理服務器的IP(在Nginx中可以使用proxy_set_header X-Forwarded-For $remote_addr;來解決),
HTTP_CLIENT_IP 是代理服務器發送的HTTP頭,如果是“超級匿名代理”,則回傳none值,同樣,REMOTE_ADDR也會被替換為這個代理服務器的IP,
/**
* 獲取獲取客戶端IP
* @return string
* @author bashlog<[email protected]>
* @date 2020-09-11 14:19
*/
function get_client_ip()
{
foreach (['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR'] as $server_key)
{
if (array_key_exists($server_key, $_SERVER)) {
$ip = trim($_SERVER[$server_key]);
//FILTER_FLAG_NO_PRIV_RANGE - 要求值不在 RFC 指定的私有范圍 IP 內(比如 192.168.0.1),
//FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范圍內,該標志接受 IPV4 和 IPV6 值,
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
return $ip;
}
}
}
return '';
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5964.html
標籤:PHP
上一篇:tp5模板顯示時間格式
