php獲取客戶端IP地址的幾種方法

gxfw 9年前發布 | 2K 次閱讀 PHP 縮略圖

    php獲取客戶端IP地址的幾種方法
閱讀php獲取客戶端IP地址的幾種方法,
<?php
$iipp=$_SERVER["REMOTE_ADDR"];
echo $iipp;
?>

<?php  
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];  
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];  
echo $user_IP;  
?>  


<?php   
function get_real_ip(){  
$ip=false;  
if(!empty($_SERVER["HTTP_CLIENT_IP"])){  
$ip = $_SERVER["HTTP_CLIENT_IP"];  
}  
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {  
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);  
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }  
for ($i = 0; $i < count($ips); $i++) {  
if (!eregi ("^(10|172\.16|192\.168)\.", $ips[$i])) {  
$ip = $ips[$i];  
break;  
}  
}  
}  
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);  
}  

echo get_real_ip();  
?>  

<?php   
//php獲取ip的算法  
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])  
{  
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];  
}  
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])  
{  
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];  
}  
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])  
{  
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];  
}  
elseif (getenv("HTTP_X_FORWARDED_FOR"))  
{  
$ip = getenv("HTTP_X_FORWARDED_FOR");  
}  
elseif (getenv("HTTP_CLIENT_IP"))  
{  
$ip = getenv("HTTP_CLIENT_IP");  
}  
elseif (getenv("REMOTE_ADDR"))  
{  
$ip = getenv("REMOTE_ADDR");  
}  
else  
{  
$ip = "Unknown";  
}  
echo "你的IP:".$ip ;  
?>  


<?php   
if(getenv('HTTP_CLIENT_IP')) {  
$onlineip = getenv('HTTP_CLIENT_IP');  
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {  
$onlineip = getenv('HTTP_X_FORWARDED_FOR');  
} elseif(getenv('REMOTE_ADDR')) {  
$onlineip = getenv('REMOTE_ADDR');  
} else {  
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];  
}  
echo $onlineip;  
?>  

<?php  
function getIP() /*獲取客戶端IP*/  
{  
if (@$_SERVER["HTTP_X_FORWARDED_FOR"])  
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];  
else if (@$_SERVER["HTTP_CLIENT_IP"])  
$ip = $_SERVER["HTTP_CLIENT_IP"];  
else if (@$_SERVER["REMOTE_ADDR"])  
$ip = $_SERVER["REMOTE_ADDR"];  
else if (@getenv("HTTP_X_FORWARDED_FOR"))  
$ip = getenv("HTTP_X_FORWARDED_FOR");  
else if (@getenv("HTTP_CLIENT_IP"))  
$ip = getenv("HTTP_CLIENT_IP");  
else if (@getenv("REMOTE_ADDR"))  
$ip = getenv("REMOTE_ADDR");  
else  
$ip = "Unknown";  
return $ip;  
}  

echo getip();  
?>  



1:來看看代碼:  

  echo "(1)瀏覽當前頁面的用戶的 IP 地址為:";  

  echo $_SERVER['REMOTE_ADDR'];  

  echo "";  

  echo "(2)瀏覽當前頁面的用戶的 IP 地址為:";  

  echo getenv('REMOTE_ADDR');  

  echo "";  

  echo "主機 www.baidu.com 的 IP 地址為:";  

  echo gethostbyname(www.baidu.com);  

2:它的輸出結果為:  

  (1)瀏覽當前頁面的用戶的 IP 地址為:127.0.0.1  

  (2)瀏覽當前頁面的用戶的 IP 地址為:127.0.0.1  

  主機 www.baidu.com 的 IP 地址為:61.135.169.105  

3:關于獲取客戶端的 IP 地址,有倆方法:  

  第一個是使用:  

  $_SERVER['REMOTE_ADDR']  

  它正在瀏覽當前頁面用戶的 IP 地址,這里的輸出結果為 127.0.0.1,因為這是在本地測試,輸出的是我本地的環路地址。  

  第倆個是使用:  

  getenv('REMOTE_ADDR')  

  這里使用了函數 getenv : Gets the value of an environment variable(得到各種環境變量的值),返回值:Returns the value of the environment variable varname, or FALSE on an error(失敗的話返回 FALSE).  

4:關于獲取服務器端的 IP 地址:  

  gethostbyname(www.baidu.com)  

  這里使用了函數 gethostbyname : Get the IP address corresponding to a given Internet host name(通過給定的一個主機名字而得到它的 IP 地址),返回值:Returns the IP address of the Internet host specified by hostname or a string containing the unmodified hostname on failure(失敗的話返回原樣的輸入字符主機名).  

5:注意這里的最后一句,也就是說,如果失敗的話,它會將原樣輸出,  
例如:    
echo "無效主機 iwilldown 的 IP 地址為:";    
echo gethostbyname("iwilldown");    
輸出無效主機 iwilldown 的 IP 地址為:iwilldown  當然,這個可不是 IP 地址….~~~~  </pre> 


 本文由用戶 gxfw 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!