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的算法
//URL:http://www.bianceng.cn/webkf/PHP/201410/45962.htm
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 地址….~~~~