PHP でのクライアント IP アドレスの取得
クライアント IP アドレスを取得する方法を検討する前に、$_SERVER[ のみを使用する理由を理解することが重要です。 'REMOTE_ADDR'] を使用すると、誤った結果が生じる可能性があります。プロキシ、ファイアウォール、またはその他の仲介者によって、元の IP アドレスが変更される可能性があります。
この問題に対処するには、次の代替アプローチがあります:
GETENV() の使用
getenv() 関数を使用すると、環境変数にアクセスできます。次の関数はこれを使用しています。
// Function to get client IP address function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if (getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); //... (Other conditions omitted for brevity) else $ipaddress = 'UNKNOWN'; return $ipaddress; }
$_SERVER の使用
PHP は、サーバー変数にアクセスするための $_SERVER スーパーグローバルも提供します。これを使用した同様の実装を次に示します。
// Function to get client IP address function get_client_ip() { $ipaddress = ''; if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; //... (Other conditions omitted for brevity) else $ipaddress = 'UNKNOWN'; return $ipaddress; }
これらの関数は両方とも、複数のサーバー変数を考慮して、利用可能な最も正確な IP アドレスを取得します。これらは、より高い信頼性を提供する HTTP_CLIENT_IP や HTTP_X_FORWARDED_FOR などの変数を優先します。
以上がPHP でクライアントの IP アドレスを確実に取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。