ホームページ >バックエンド開発 >PHPチュートリアル >PHP でクライアントの IP アドレスを確実に取得する方法
PHP でクライアントの IP アドレスを取得する
PHP の $_SERVER スーパーグローバルは、Web サイト訪問者の IP アドレスを取得するメソッドを提供します。ただし、従来の $_SERVER['REMOTE_ADDR'] アプローチを使用すると、間違った IP アドレスが返される可能性があります。この不一致は、プロキシ サーバーやロード バランサーなどの複数の要因に起因する可能性があります。
正確な IP アドレスを取得するには、代替サーバー変数を検討してください。次の 2 つの関数は交換可能であり、その方法を示しています。
getenv() の使用:
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'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; }
$_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']; else if(isset($_SERVER['HTTP_X_FORWARDED'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_FORWARDED'])) $ipaddress = $_SERVER['HTTP_FORWARDED']; else if(isset($_SERVER['REMOTE_ADDR'])) $ipaddress = $_SERVER['REMOTE_ADDR']; else $ipaddress = 'UNKNOWN'; return $ipaddress; }
これらの関数は、サーバーで使用可能な最も信頼性の高い IP アドレス オプションを優先します。変数を使用して、クライアントの IP アドレスを正確に表現します。
以上がPHP でクライアントの IP アドレスを確実に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。