ホームページ > バックエンド開発 > PHPチュートリアル > PHP でクライアントの IP アドレスを確実に取得する方法は?

PHP でクライアントの IP アドレスを確実に取得する方法は?

DDD
リリース: 2024-12-18 07:19:11
オリジナル
302 人が閲覧しました

How to Reliably Get a Client's IP Address in PHP?

PHP でのクライアント IP アドレスの取得

クライアント IP アドレスを取得する方法を検討する前に、$_SERVER[ のみを使用する理由を理解することが重要です。 'REMOTE_ADDR'] を使用すると、誤った結果が生じる可能性があります。プロキシ、ファイアウォール、またはその他の仲介者によって、元の IP アドレスが変更される可能性があります。

この問題に対処するには、次の代替アプローチがあります:

GETENV() の使用

getenv() 関数を使用すると、環境変数にアクセスできます。次の関数はこれを使用しています。

// Function to get client IP address
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');
    //... (Other conditions omitted for brevity)
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
ログイン後にコピー

$_SERVER の使用

PHP は、サーバー変数にアクセスするための $_SERVER スーパーグローバルも提供します。これを使用した同様の実装を次に示します。

// Function to get client IP address
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'];
    //... (Other conditions omitted for brevity)
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
ログイン後にコピー

これらの関数は両方とも、複数のサーバー変数を考慮して、利用可能な最も正確な IP アドレスを取得します。これらは、より高い信頼性を提供する HTTP_CLIENT_IP や HTTP_X_FORWARDED_FOR などの変数を優先します。

以上がPHP でクライアントの IP アドレスを確実に取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート