使用PHP获取客户端IP地址

我想获取使用我网站的客户IP地址。我正在使用PHP $_SERVERsuperglobal:

$_SERVER['REMOTE_ADDR'];

但是我看到它不能使用此提供正确的IP地址。我得到了我的IP地址,发现它与我的IP地址不同,并且我还可以在某些网站上看到我的IP地址,例如:

http://whatismyipaddress.com/

我粘贴了提供PHP功能的IP地址,但是此网站未显示任何结果。这个问题是怎么发生的,如何获得客户端的IP地址?

回答:

获取访问者/客户的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;

}

$ _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;

}

以上是 使用PHP获取客户端IP地址 的全部内容, 来源链接: utcz.com/qa/411062.html

回到顶部