ホームページ >バックエンド開発 >PHPチュートリアル >PHPで実際のIPを取得する方法

PHPで実際のIPを取得する方法

WBOY
WBOYオリジナル
2016-06-13 12:53:091050ブラウズ

PHP で実際の IP を取得する方法
インターネットで多くのコードを試しましたがうまくいきませんでしたが、ip138 では毎回実際の IP を表示できます。特に皆さんに助けを求めています。

たとえば、通常の PHP を使用して取得した私の IP アドレスは次のとおりです: 60.55.8.229 - 浙江寧波

しかし、ip38.com で取得した私の IP アドレスは [42.196.192.67] 送信元: 上海万里の長城ブロードバンド

ip138が正しいです。

これは、私が病院でテストしたときも同様でした。私の PHP コードで取得した IP は、浙江省杭州
でした。
しかし、ip138 は私の本当の IP を取得できます、上海交通大学

現在使用している PHP コードは次のとおりです:

function GetIP(){ <br />
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) <br />
$ip = getenv("HTTP_CLIENT_IP"); <br />
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) <br />
$ip = getenv("HTTP_X_FORWARDED_FOR"); <br />
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) <br />
$ip = getenv("REMOTE_ADDR"); <br />
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) <br />
$ip = $_SERVER['REMOTE_ADDR']; <br />
else <br />
$ip = "unknown"; <br />
return($ip); <br />
} <br />
echo GetIP();


-----解決策--------------------------------
それが私の方法です:
Function curIp(){<br />
		$ip='';<br />
		IF(Getenv('HTTP_CLIENT_IP') And StrCaseCmp(Getenv('HTTP_CLIENT_IP'),'unknown')){<br />
			$ip=Getenv('HTTP_CLIENT_IP');<br />
		}ElseIF(Getenv('HTTP_X_FORWARDED_FOR') And StrCaseCmp(Getenv('HTTP_X_FORWARDED_FOR'),'unknown')){<br />
			$ip=Getenv('HTTP_X_FORWARDED_FOR');<br />
		}ElseIF(Getenv('REMOTE_ADDR')And StrCaseCmp(Getenv('REMOTE_ADDR'),'unknown')){<br />
			$ip=Getenv('REMOTE_ADDR');<br />
		}ElseIF(isset($_SERVER['REMOTE_ADDR']) And $_SERVER['REMOTE_ADDR'] And StrCaseCmp($_SERVER['REMOTE_ADDR'],'unknown')){<br />
			$ip=$_SERVER['REMOTE_ADDR'];<br />
		}Else{<br />
			$ip='127.0.0.1';<br />
		}<br />
		Return $ip;<br />
	}

-----解決策---------
function real_ip()
{
static $realip = NULL;

if ($realip !== NULL)
{
$realip を返します;
}

if (isset($_SERVER))
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$arr =explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

/* X-Forwarded-For 内の最初の未知ではない有効な IP 文字列を取得します */
foreach ($arr AS $ip)
{
$ip = トリム($ip);

if ($ip != '不明')
{
$realip = $ip;

休憩;
}
}
}
elseif (isset($_SERVER['HTTP_CLIENT_IP']))
{
$realip = $_SERVER['HTTP_CLIENT_IP'];
}
それ以外
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$realip = $_SERVER['REMOTE_ADDR'];
}
それ以外
{
$realip = '0.0.0.0';
}
}
}
それ以外
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$realip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$realip = getenv('HTTP_CLIENT_IP');
}
それ以外
{
$realip = getenv('REMOTE_ADDR');
}
}
$onlineip = null;
preg_match("/[d.]{7,15}/", $realip, $onlineip);
$realip = !empty($onlineip[0]) $onlineip[0] : '0.0.0.0';

$realip を返します;
}
------解決策---------
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。