この記事では主に、参考値となる実クライアントの実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 = 最後のプロキシ サーバー IPHTTP_VIA = プロキシ サーバー IPHTTP_X_FORWARDED_FOR = 実際の IP、複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98。 182.163、203.98.182.163、203.129.72.215。このタイプのプロキシ サーバーは依然としてあなたの情報を訪問者に転送するため、あなたの本当の身元を隠すという目的を達成することはできません。
3. 通常の匿名プロキシ サーバーを使用する場合: 匿名プロキシ
REMOTE_ADDR = 最後のプロキシ サーバー IPHTTP_VIA = プロキシ サーバー IPHTTP_X_FORWARDED_FOR = 複数のプロキシ サーバーを経由する場合、この値は次と同様です。次のとおりです: 203.98.182.163、203.98.182.163、203.129.72.215。実際の IP を隠しますが、アクセスにプロキシ サーバーを使用していることを訪問者に明らかにします。
4. 不正なプロキシ サーバーの使用: 歪んだプロキシ
REMOTE_ADDR = プロキシ サーバー IPHTTP_VIA = プロキシ サーバー IPHTTP_X_FORWARDED_FOR = 複数のプロキシ サーバーを経由する場合、この値は次のようになります。 :203.98.182.163、203.98.182.163、203.129.72.215。訪問者に、プロキシ サーバーを使用していることを伝えますが、実際の IP の代わりに偽のランダム IP を作成してなりすますようにしてください。
5. 高匿名性プロキシ サーバーを使用する場合: 高匿名性プロキシ (エリート プロキシ)
REMOTE_ADDR = プロキシ サーバー IPHTTP_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 を取得する方法を理解する以上が実際のクライアントの実際の IP を取得するための PHP 実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。