ホームページ >バックエンド開発 >PHPチュートリアル >プロキシの背後で実際の訪問者の IP アドレスを取得するにはどうすればよいですか?

プロキシの背後で実際の訪問者の IP アドレスを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 17:54:02350ブラウズ

How to Get the Real Visitor IP Address Behind Proxies?

プロキシの背後にある実際の訪問者の IP を取得する

訪問者がプロキシを使用する場合、標準の PHP メソッド $_SERVER['REMOTE_ADDR'] は使用できない場合があります実際の訪問者の IP アドレスを提供します。この問題に対処するには、次の PHP コードの利用を検討してください:

<code class="php">function getUserIP()
{
    // Handle CloudFlare network
    if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
        $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
    }

    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}

$user_ip = getUserIP();

echo $user_ip; // Output real visitor IP address</code>

このコードは、CloudFlare ネットワークをチェックし、それに応じて IP アドレスを調整します。次に、HTTP_CLIENT_IP、HTTP_X_FORWARDED_FOR、REMOTE_ADDR をこの順序で検査し、有効な形式の IP を優先します。このコードを実装すると、訪問者がプロキシの背後にいる場合でも、実際の訪問者の IP アドレスを取得できます。

以上がプロキシの背後で実際の訪問者の IP アドレスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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