【发布时间】:2016-10-25 22:27:00
【问题描述】:
我找到了两种方法来给我用户的 IP:
方法一:
function get_ip() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ip = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ip = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ip = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ip = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ip = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ip = getenv('REMOTE_ADDR');
else
$ip = 'UNKNOWN';
return $ip;
}
方法2:
function get_ip() {
if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
你能告诉我哪个更好吗?实际上我需要在每个页面加载时执行该功能get_ip()。同样如您所见,第一种方法有很多条件(if-statements)。那么我可以简单地使用第二个吗?
换句话说,approach1 比 approach2 有优势吗?
【问题讨论】:
-
@mistermartin 这两种方法的区别不仅在于使用
getenv()和$_SERVER。