ホームページ  >  記事  >  バックエンド開発  >  実際のクライアントの実際の IP を取得するための PHP 実装

実際のクライアントの実際の IP を取得するための PHP 実装

墨辰丷
墨辰丷オリジナル
2018-05-25 09:49:031358ブラウズ

この記事では主に、参考値となる実クライアントの実IP(REMOTE_ADDR、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR)をPHPで取得する方法を紹介します。以下のエディターで見てみましょう

REMOTE_ADDR は、クライアントがサーバーと「ハンドシェイク」するときの IP です。 「匿名プロキシ」が使用されている場合、REMOTE_ADDR にはプロキシ サーバーの IP が表示されます。

HTTP_CLIENT_IP は、プロキシ サーバーによって送信される HTTP ヘッダーです。 「スーパー匿名プロキシ」の場合は、値 none が返されます。同様に、REMOTE_ADDR はこのプロキシ サーバーの IP に置き換えられます。

$_SERVER['REMOTE_ADDR'] //アクセス側(ユーザーの場合もプロキシの場合もある) IP

$_SERVER['HTTP_CLIENT_IP'] //プロキシの側(プロキシの場合もある)が存在する偽造可能)

$_SERVER['HTTP_X_FORWARDED_FOR']; //ユーザーがプロキシとして使用している IP (存在する可能性があり、偽造可能)

3 つの値の違い次のとおりです:

1.プロキシサーバーが使用されない場合:

Remote_addr= Your IP透過的プロキシ サーバーの使用 状況: 透過的プロキシ

REMOTE_ADDR = 最後のプロキシ サーバー IP

HTTP_VIA = プロキシ サーバー IP

HTTP_X_FORWARDED_FOR = 実際の IP、複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98。 182.163、203.98.182.163、203.129.72.215。

このタイプのプロキシ サーバーは依然としてあなたの情報を訪問者に転送するため、あなたの本当の身元を隠すという目的を達成することはできません。

3. 通常の匿名プロキシ サーバーを使用する場合: 匿名プロキシ

REMOTE_ADDR = 最後のプロキシ サーバー IP

HTTP_VIA = プロキシ サーバー IP

HTTP_X_FORWARDED_FOR = 複数のプロキシ サーバーを経由する場合、この値は次と同様です。次のとおりです: 203.98.182.163、203.98.182.163、203.129.72.215。

実際の IP を隠しますが、アクセスにプロキシ サーバーを使用していることを訪問者に明らかにします。

4. 不正なプロキシ サーバーの使用: 歪んだプロキシ

REMOTE_ADDR = プロキシ サーバー IP

HTTP_VIA = プロキシ サーバー IP

HTTP_X_FORWARDED_FOR = 複数のプロキシ サーバーを経由する場合、この値は次のようになります。 :203.98.182.163、203.98.182.163、203.129.72.215。

訪問者に、プロキシ サーバーを使用していることを伝えますが、実際の IP の代わりに偽のランダム IP を作成してなりすますようにしてください。

5. 高匿名性プロキシ サーバーを使用する場合: 高匿名性プロキシ (エリート プロキシ)

REMOTE_ADDR = プロキシ サーバー IP

HTTP_VIA = 値なしまたは表示なし

HTTP_X_FORWARDED_FOR = 複数の場合、値なしまたは表示なしプロキシ サーバーとして機能する場合、この値は次のようになります: 203.98.182.163、203.98.182.163、203.129.72.215。

プロキシ サーバーを使用してオブジェクトに直接アクセスしているのと同じように、すべての情報をプロキシ サーバーの情報で完全に置き換えます。

//获取用户IP
$ip = '';
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_FROM', 'REMOTE_ADDR') as $v) {
  if (isset($_SERVER[$v])) {
    if (! preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $_SERVER[$v])) {
        continue;
  } 
     $ip = $_SERVER[$v];
  }
}
uset($ip,$v);

以上がこの記事の全内容です、皆様の勉強に少しでもお役に立てれば幸いです。

関連する推奨事項:

PHP が

client

ip を取得する方法を理解する


PHP は、ソケット

に基づいて
client

とサーバー通信機能を実装するTCP の実装の詳細な説明サーバーと

クライアント

の機能ステップ

以上が実際のクライアントの実際の IP を取得するための PHP 実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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