技术学习 PHP获取服务器IP与客服端IP

PHP获取服务器IP与客服端IP

45
 

在PHP中,你可以使用不同的方法来获取服务器IP和客户端IP。

获取服务器IP

你可以使用$_SERVER超全局数组来获取服务器IP。通常,$_SERVER['SERVER_ADDR']会返回服务器的IP地址。但是,这取决于服务器的配置和PHP的运行环境,有时可能返回的是127.0.0.1(如果PHP通过本地回环接口运行)。

下面是一个示例:

php复制代码

$serverIP = $_SERVER['SERVER_ADDR'];
echo "服务器IP地址是: " . $serverIP;

获取客户端IP

获取客户端IP稍微复杂一些,因为客户端可能通过多个代理服务器连接到你的服务器。通常,你可以检查$_SERVER['REMOTE_ADDR']来获取直接连接到你的服务器的客户端的IP地址。但是,如果客户端使用了代理,你可能还需要检查$_SERVER['HTTP_X_FORWARDED_FOR']来获取真实的客户端IP。

下面是一个示例:

php复制代码

function get_client_ip() {
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR') as $key) {
if (array_key_exists($key, $_SERVER) === true) {
foreach (explode(',', $_SERVER[$key]) as $ip) {
$ip = trim($ip); // just to be safe  
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) {
return $ip;
}
}
}
}
return null;
}


$clientIP = get_client_ip();
echo "客户端IP地址是: " . ($clientIP ? $clientIP : "无法获取");

在这个示例中,get_client_ip函数会尝试从$_SERVER['HTTP_CLIENT_IP']$_SERVER['HTTP_X_FORWARDED_FOR']$_SERVER['REMOTE_ADDR']中获取客户端的IP地址。它会遍历这些值,并使用filter_var函数来验证每个IP地址是否有效。如果找到了有效的IP地址,它就会返回该地址。如果没有找到有效的IP地址,它就会返回null

请注意,$_SERVER['HTTP_X_FORWARDED_FOR']可能会被代理服务器修改,因此不能完全信任它提供的IP地址。在某些情况下,你可能需要配置你的服务器或代理服务器来确保$_SERVER['HTTP_X_FORWARDED_FOR']包含正确的客户端IP地址。


更新:2024-04-26 09:23:08 © 著作权归作者所有
QQ
微信