ホームページ >バックエンド開発 >PHPの問題 >php で取得した IP が不正確な場合はどうすればよいですか?

php で取得した IP が不正確な場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2021-02-24 10:03:573023ブラウズ

php によって取得される不正確な IP は、ユーザーがプロキシを使用していることが原因である可能性があるため、「$_SERVER['REMOTE_ADDR']」はユーザーの実際の IP を認識できません。解決策は、「X-Forwarded-実際の IP を取得するための「エンティティ ヘッダー」。

php で取得した IP が不正確な場合はどうすればよいですか?

#この記事の動作環境: Windows7 システム、PHP7.1、Dell G3 コンピューター。

php 取得した IP は本物ではありませんか?

皆さん、突然思いついたことがあります。サーバーのイントラネット IP (おそらくサーバーのプロキシ IP) を取得するために、通常の $_SERVER[‘REMOTE_ADDR’]; を使用していません。そのコードには問題はなく、リバース プロキシ (nginx など) を使用します。ユーザーもプロキシを使用する可能性があるため、単純な $_SERVER[‘REMOTE_ADDR’] ではユーザーの実際の IP を感知できません。

ただし、プロキシ IP を通じて実際のユーザーのアドレスを取得できるパラメーターがあります。 HTTPプロトコルを拡張します。 X-Forwarded-For というエンティティ ヘッダーが定義されています。

これは、主に広告スター向けに考えているため、結局のところ、他の人がエージェントとして機能して売り上げを伸ばすことができると考えています。

[推奨: PHP ビデオ チュートリアル ]

コードは次のとおりです:

//获取用户IP地址
    public function getIp()
    {
        if(!empty($_SERVER["HTTP_CLIENT_IP"]))
        {
            $cip = $_SERVER["HTTP_CLIENT_IP"];
        }
        else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
        {
            $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        }
        else if(!empty($_SERVER["REMOTE_ADDR"]))
        {
            $cip = $_SERVER["REMOTE_ADDR"];
        }
        else
        {
            $cip = '';
        }
        preg_match("/[\d\.]{7,15}/", $cip, $cips);
        $cip = isset($cips[0]) ? $cips[0] : 'unknown';
        unset($cips);
        return $cip;
    }

以上がphp で取得した IP が不正確な場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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