ホームページ >バックエンド開発 >PHPチュートリアル >PHP でクライアントの IP アドレスを正確に特定するにはどうすればよいですか?
PHP でのクライアントの IP アドレスの決定
PHP スーパーグローバル配列 $_SERVER は、クライアントのリモートを含むさまざまなサーバー関連情報へのアクセスを提供します$_SERVER['REMOTE_ADDR'] 経由の IP アドレス。ただし、このアプローチは特定のシナリオでは不十分である可能性があります。
$_SERVER['REMOTE_ADDR'] 値が正しくない場合は、代替サーバー変数を使用して IP アドレスを正確に取得できます。以下では、2 つのアプローチを検討します。
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'); 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 スーパーグローバル配列の使用:
$_SERVER 配列には HTTP リクエスト情報が含まれています。次のコードは、IP アドレスを取得する際の使用法を示しています。
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; }
どちらのアプローチでも同等の機能を提供しますが、情報へのアクセス方法が異なります。
以上がPHP でクライアントの IP アドレスを正確に特定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。