我想获取使用我网站的客户端 IP 地址。我正在使用 PHP$_SERVER
超全局:
$_SERVER['REMOTE_ADDR'];
但我发现使用此方法无法给出正确的 IP 地址。我获取我的 IP 地址,发现它与我的 IP 地址不同,而且我还可以在某些网站中看到我的 IP 地址,例如:
http://whatismyipaddress.com/
我粘贴了提供 PHP 函数的 IP 地址,但该网站没有显示任何结果。这个问题是怎么产生的,如何获取客户端的IP地址?
获取访客/客户的最简单方法IP地址 http://en.wikipedia.org/wiki/IP_address正在使用$_SERVER['REMOTE_ADDR']
or $_SERVER['REMOTE_HOST']
变量。
但是,有时这不会返回访问者的正确IP地址,因此我们可以使用一些其他服务器变量来获取IP地址。
下面的两个函数是等效的,只是检索值的方式和位置不同。
getenv() 用于获取 PHP 中环境变量的值。
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
$_SERVER 是一个数组,其中包含 Web 服务器创建的服务器变量。
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)