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

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

WBOY
リリース: 2016-06-23 14:11:46
オリジナル
983 人が閲覧しました

インターネットで多くのコードを試しましたが、何も機能しませんでしたが、ip138 では毎回実際の IP を表示できます。特にヒーロー全員に協力を求めています。

たとえば、一般的な PHP を使用して取得した私の IP アドレスは次のとおりです: 60.55.8.229 - Ningbo, Zhejiang

しかし、ip38.com で取得した私の IP アドレスは次のとおりです: [42.196.192.67] From: Shanghai Great Wall Broadband

ip138 は正しい。

これは、私が病院でテストしたときのケースでもあり、私のphpコードで取得したIPは浙江省杭州です

しかし、ip138は私の実際のIP、上海交通大学を取得できます

私が現在使用しているPHPコードは次のとおりです。以下の通りです:

function GetIP(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip); } echo GetIP();
ログイン後にコピー


ディスカッションへの返信 (解決策)

まだ勉強していませんが、それについても知りたいです。
階下の答えを楽しみにしています

http://iframe.ip138.com/ic.asp

もしかしたら、ASP には魔法の関数があるのでしょうか

これは私の方法です:

Function curIp(){		$ip='';		IF(Getenv('HTTP_CLIENT_IP') And StrCaseCmp(Getenv('HTTP_CLIENT_IP'),'unknown')){			$ip=Getenv('HTTP_CLIENT_IP');		}ElseIF(Getenv('HTTP_X_FORWARDED_FOR') And StrCaseCmp(Getenv('HTTP_X_FORWARDED_FOR'),'unknown')){			$ip=Getenv('HTTP_X_FORWARDED_FOR');		}ElseIF(Getenv('REMOTE_ADDR')And StrCaseCmp(Getenv('REMOTE_ADDR'),'unknown')){			$ip=Getenv('REMOTE_ADDR');		}ElseIF(isset($_SERVER['REMOTE_ADDR']) And $_SERVER['REMOTE_ADDR'] And StrCaseCmp($_SERVER['REMOTE_ADDR'],'unknown')){			$ip=$_SERVER['REMOTE_ADDR'];		}Else{			$ip='127.0.0.1';		}		Return $ip;	}
ログイン後にコピー

function real_ip()
{
static $realip = NULL;

if ($realip !== NULL)
{
return $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 != 'unknown')
{
$realip = $ip;
}
}
}
elseif (isset ($_SERVER['HTTP_CLIENT_IP']))
{
$realip = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
if (isset($_SERVER['REMOTE_ADDR']))
{
$ realip = $_SERVER['REMOTE_ADDR'];
}
else
{
$realip = '0.0.0.0'; }
}
}
else
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$リアルリップ= getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('HTTP_CLIENT_IP'))
{
$realip = getenv('HTTP_CLIENT_IP')
}
else
{
$realip = geten v('REMOTE_ADDR') ;
}
}
$onlineip = null;
preg_match("/[d.]{7,15}/", $realip, $onlineip);
$realip = !empty($onlineip[0]); [0] : '0.0.0.0';

return $realip; }

コードがどれほど複雑であっても、必ず
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
REMOTE_ADDR

が存在するかどうかを確認し、存在すると最後にhttp_client_ip と http_x_Forwarded_For はプログラム可能です

$

$ ip = '888.888.88888'
CURL_SETOPT ("X-Forwarded-For: $ IP", "CLIENT-IP:$ip"; ));
すると、あなたのコードは ip が 888.888.888.888 であると考えるでしょう
明らかにこれは冗談です

REMOTE_ADDR は常にネットワークへの第 1 レベルのルートの IP を反映します、これは真実です

は本物ですか?私がプロキシになるのはバカですね〜

プロキシを突破するには、他のテクノロジーが必要です

私は個人的に Goagent の Google プロキシを使用しています。時間も測れない。



PHP の関数を使用して実現できます

IP を取得する上記のコードには何も問題はありません。問題は、サーバーが単一行である可能性があることです。

米国のサーバーを使用して同じ PHP コードを使用して実際の万里の長城ブロードバンド IP を取得するのは間違いであることを個人的にテストしました。杭州の Alibaba 複数回線サーバーを使用すると、取得された IP は厦門電信の ip138 と同じになります。 line、取得したIPも間違っています。この国では複線化が非常に重要であることがわかります。この国はおばあちゃんのせいで、人為的な障害がたくさんある。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート