猿问

使用PHP获取客户端IP地址

使用PHP获取客户端IP地址

我想得到使用我的网站的客户IP地址。我正在使用PHP$_SERVER超全球:

$_SERVER['REMOTE_ADDR'];

但我看到它不能给出正确的IP地址使用这个。我得到我的IP地址,并看到它与我的IP地址不同,我也可以在一些网站上看到我的IP地址,比如:

http://whatismyipaddress.com/

我粘贴IP地址,这给了我的PHP功能,但这个网站没有显示这方面的结果。这个问题是如何产生的,我如何获得客户端的IP地址?


慕姐8265434
浏览 1306回答 3
3回答

浮云间

获取访客/客户的最简单方法IP地址正在使用$_SERVER['REMOTE_ADDR']或$_SERVER['REMOTE_HOST']变量。但是,有时这并不返回访问者的正确IP地址,因此我们可以使用其他一些服务器变量来获取IP地址。下面这两个函数仅在检索值的方式和位置上的差异是等价的。getenv()用于获取PHP中环境变量的值。// Function to get the client IP addressfunction 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 addressfunction 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;}

肥皂起泡泡

在PHP5.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');

小怪兽爱吃肉

 $ipaddress = '';     if ($_SERVER['HTTP_CLIENT_IP'] != '127.0.0.1')         $ipaddress = $_SERVER['HTTP_CLIENT_IP'];     else if ($_SERVER['HTTP_X_FORWARDED_FOR'] != '127.0.0.1')         $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];     else if ($_SERVER['HTTP_X_FORWARDED'] != '127.0.0.1')         $ipaddress = $_SERVER['HTTP_X_FORWARDED'];     else if ($_SERVER['HTTP_FORWARDED_FOR'] != '127.0.0.1')         $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];     else if ($_SERVER['HTTP_FORWARDED'] != '127.0.0.1')         $ipaddress = $_SERVER['HTTP_FORWARDED'];     else if ($_SERVER['REMOTE_ADDR'] != '127.0.0.1')         $ipaddress = $_SERVER['REMOTE_ADDR'];     else         $ipaddress = 'UNKNOWN';
随时随地看视频慕课网APP
我要回答