PHP を使用してユーザーの IP アドレスを取得する場合、考慮できるサーバー変数が複数あります。絶対確実な方法はありませんが、この記事では、これらの変数に基づいて最も正確なアプローチを検討します。
Background
$_SERVER 配列には、IP アドレス情報を提供する可能性のある多数のヘッダーが含まれています。 。ただし、これらのヘッダーの信頼性と精度は、プロキシ構成とネットワーク トポロジによって異なる場合があります。
一般的に使用される方法
従来、次のシーケンスを使用してヘッダーを取得してきました。ユーザーの IP アドレス:
最適化されたアプローチ
精度とパフォーマンスを向上させるために、このシーケンスは次のように最適化されています。
function get_ip_address() { $headers = ['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR']; foreach ($headers as $header) { if (isset($_SERVER[$header]) && ($ip = trim($_SERVER[$header]))) { if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { return $ip; } } } return null; }
注意
このアプローチでは、ほとんどのプロキシの背後にあるユーザーの IP アドレスが取得されますが、次の点に注意することが重要です。
追加の注意事項
以上がPHP で最も正確なユーザー IP アドレスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。