ホームページ >バックエンド開発 >PHPチュートリアル >PHP でクライアントの IP アドレスを正確に特定するにはどうすればよいですか?

PHP でクライアントの IP アドレスを正確に特定するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-17 05:33:25747ブラウズ

How Can I Accurately Determine a Client's IP Address in PHP?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。