use*_*627 192 php ip-address
我想获得使用我的网站的客户端IP地址.我正在使用PHP $_SERVER超全局:
$_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)
但我发现使用它无法提供正确的IP地址.我得到了我的IP地址,看到它与我的IP地址不同,我也可以在某些网站上看到我的IP地址,例如:
http://whatismyipaddress.com/
Run Code Online (Sandbox Code Playgroud)
我粘贴了我的PHP函数的IP地址,但是这个网站没有显示结果.这个问题是如何产生的,如何获得客户端的IP地址?
小智 347
获取访问者/客户端IP地址的最简单方法是使用$_SERVER['REMOTE_ADDR']或$_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;
}
Run Code Online (Sandbox Code Playgroud)
$ _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;
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*ael 120
在PHP 5.3或更高版本中,您可以这样得到它:
$ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
Run Code Online (Sandbox Code Playgroud)