プロキシ サーバーの背後にある真の IP アドレスの特定
$_SERVER['REMOTE_ADDR'] などの標準的な PHP メソッドを使用して訪問者の IP アドレスを取得する訪問者がプロキシ サーバー経由で Web サイトにアクセスしている場合、正確な情報が提供されない可能性があります。
この問題に対処するには、次の PHP コードの利用を検討してください。
<code class="php">function getUserIP() { // Obtain the IP address of the visitor behind CloudFlare if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) { $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"]; } $client = @$_SERVER['HTTP_CLIENT_IP']; $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; $remote = $_SERVER['REMOTE_ADDR']; $ip = null; if(filter_var($client, FILTER_VALIDATE_IP)) { $ip = $client; } elseif(filter_var($forward, FILTER_VALIDATE_IP)) { $ip = $forward; } else { $ip = $remote; } return $ip; } $user_ip = getUserIP(); echo $user_ip; // Output IP address [Ex: 177.87.193.134]</code>
この関数は、まず、訪問者は、人気のあるプロキシ サービスである CloudFlare を使用しています。その場合、HTTP_CF_CONNECTING_IP ヘッダーを使用して実際の IP アドレスを取得します。
次に、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、および REMOTE_ADDR の 3 つの潜在的な IP ソースを検討します。各 IP アドレスを検証し、最も信頼できる IP アドレスを選択します。
このアプローチを採用すると、訪問者がプロキシ サーバーの背後にいる場合でも、訪問者の実際の IP アドレスを効果的に取得できます。
以上がプロキシ サーバーの背後にある真の IP アドレスを特定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。