この記事では、PHP を使用してユーザー クライアントの実際の IP を取得する方法を主に紹介します。これを必要とする友人に共有します。クライアントの IP は実際には単純な仕事ではありません。IP スプーフィングや代理店の問題があるため、クライアントの IP を取得する際の信頼性は損なわれ、100% 正確に取得することはできません。顧客の IP は次のとおりです。ユーザーのクライアントの実際の IP を取得する PHP メソッドを紹介します。
IP スプーフィングとプロキシがあるため、クライアントの IP を取得するのは簡単ではありません。クライアントの IP の信頼性を取得するという問題がありますが、これは割り引かれるため、100% 正確であることはできません。ただし、クライアントの実際の IP を取得するためのより完全な方法を模索しています。php を使用して IP を取得する方法は数多くあります。
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);
次に、このコードを実行する必要があります。説明では、getenv() と strcasecmp() という 2 つの関数が使用され、値が取得できる場合は、システム環境変数を取得します。値、それ以外の場合は false を返します。
$_SERVER これはサーバーのスーパー グローバル変数配列です。$_SERVER['REMOTE_ADDR'] を使用してクライアントの IP アドレスを取得することもできます。2 つの違いは getenv であることです。 IIS isapi モードでの php の実行はサポートされていません。
strcasecmp(string1 , string2) string 関数の使用法は、string1 と string2 が等しい場合、string1 が string2 より大きい場合に 0 を返します。 0 より大きい場合は、0 より小さい数値が返されます。
関数は最初に顧客の IP を使用します。機能しない場合は、プロキシ メソッドを使用してみてください。機能しません。REMOTE_ADDR を使用してください。
また、IP スプーフィングと複数のプロキシ コードを考慮した、より詳細な IP 検出方法も確認しました。この方法は同様です。 ##1. プロキシ サーバーを使用せずにクライアント IP を取得する PHP:
REMOTE_ADDR = クライアント IPHTTP_X_FORWARDED_FOR = 値なしまたは表示なし
2.透過プロキシ サーバーを使用する場合: 透過プロキシHTTP_X_FORWARDED_FOR = クライアントの実際の IP (複数のプロキシ サーバーを経由する場合、この値は同様です) : 221.5.252.160、203.98.182.163、203.129.72.215)このタイプのプロキシ サーバーは依然としてクライアントの実際の IP をアクセス オブジェクトに送信するため、真の ID を隠すという目的を達成できません。
3. 通常の匿名プロキシ サーバーの PHP を使用してクライアント IP を取得します。 匿名プロキシ
#REMOTE_ADDR = 最後のプロキシ サーバー IP
HTTP_X_FORWARDED_FOR = プロキシ サーバー IP (複数ある場合)プロキシ サーバーの場合、この値は同様です: 203.98.182.163、203.98.182.163、203.129.72.215)この場合、クライアントの実際の IP は隠されていますが、クライアントはアクセスに対して公開されます。オブジェクト プロキシ サーバーを使用してアクセスされます。
4. 不正なプロキシ サーバーの使用: プロキシの歪み
REMOTE_ADDR = プロキシ サーバー IP
HTTP_X_FORWARDED_FOR = ランダム IP (複数のプロキシ サーバーを経由する場合、この値は同様です: 220.4.251.159、203.98.182.163、203.129.72.215)この場合、クライアントがプロキシ サーバーを使用しているが、1 つの偽のサーバーを作成していることも明らかになります。ランダムな IP (220.4.251.159) はクライアントの実際の IP を置き換えて欺瞞します。
5. 高匿名性プロキシ サーバーの PHP を使用してクライアント IP を取得します: 高匿名性プロキシ (エリート プロキシ)
REMOTE_ADDR = プロキシ サーバー IP
HTTP_X_FORWARDED_FOR = 値がないか、表示されませんREMOTE_ADDR であっても HTTP_FORWARDED_FOR であっても、ブラウザーが異なるため、これらのヘッダー メッセージは利用できない場合があります。ネットワーク デバイスは異なる IP ヘッダー メッセージを送信する可能性があるため、$_SERVER["REMOTE_ADDR"] および $_SERVER["HTTP_X_FORWARDED_FOR"] を使用して PHP によって取得される値は、null 値または「不明な」値である可能性があります。
#以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。 関連する推奨事項:PHP でアンチリーチングを実装する方法
PHP は IP 情報を取得し、php は ip を取得します以上がPHP を使用してユーザークライアントの実際の IP を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。