PHP でのクライアント IP アドレスの取得: 不一致の詳細を調べる
取得には $_SERVER['REMOTE_ADDR'] が広く使用されているにもかかわらずクライアントの IP アドレスについては、その正確性に関して懸念が生じています。この問題に対処するために、追加のサーバー変数を使用した別のアプローチを検討してみましょう。
getenv() の使用
getenv() 関数を使用すると、次のような環境変数にアクセスできます。クライアントの IP アドレス:
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'); // ... Further checks for other server variables omitted else $ipaddress = 'UNKNOWN'; return $ipaddress; }
を使用$_SERVER
別の方法では、$_SERVER 配列を介してサーバー変数に直接アクセスします:
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']; // ... Further checks for other server variables omitted else $ipaddress = 'UNKNOWN'; return $ipaddress; }
なぜ矛盾があるのですか?
さまざまな方法で取得した IP アドレスには、次のような要因により差異が生じる場合があります。次のように:
最高の精度を確保するには、クライアントの IP アドレスを決定するときに複数のサーバー変数を考慮することをお勧めします。
以上がPHP でクライアントの IP アドレスを正確に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。