ホームページ  >  記事  >  バックエンド開発  >  PHPでクライアントの実際のIPアドレスを取得する方法

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

不言
不言オリジナル
2018-07-07 14:14:5462056ブラウズ

この記事では、PHP でクライアントの実際の IP アドレスを取得する方法を主に紹介します。ある参考値がありますので、共有します。必要な友人は参考にしてください。

推奨マニュアル: php完全自習マニュアル

phpではクライアントIPアドレスを取得する方法が4つあります。

#
REMOTE_ADDR
HTTP_CLIENT_IP
HTTP_X_FORWARDED_FOR
HTTP_VIA

REMOTE_ADDR は、クライアントがサーバーと「ハンドシェイク」するときの IP です。 「匿名プロキシ」が使用されている場合、REMOTE_ADDR にはプロキシ サーバーの IP が表示されます。 HTTP_CLIENT_IP は、プロキシ サーバーによって送信される HTTP ヘッダーです。 「スーパー匿名プロキシ」の場合は、値 none が返されます。同様に、REMOTE_ADDR はこのプロキシ サーバーの IP に置き換えられます。

$_SERVER['REMOTE_ADDR']; //アクセス側(ユーザーの場合もプロキシの場合もあり) IP

$_SERVER['HTTP_CLIENT_IP']; //エージェント側(存在する場合があります)

$_SERVER['HTTP_X_FORWARDED_FOR']; //ユーザーがプロキシとして使用している IP (存在する可能性がありますが、偽造される可能性もあります)

関連記事の推奨:

1.phpでユーザーのIPアドレスを取得する方法
2.php はどのようにしてクライアントの IP アドレスを取得しますか?
関連ビデオの推奨:
1.Dugu Jiijian (4)_PHP ビデオ チュートリアル

#3 価値の違い

1. プロキシ サーバーが使用されていない場合:

REMOTE_ADDR = Your IPHTTP_VIA = 値がないか、表示されません

HTTP_X_FORWARDED_FOR = 値がないか、表示されません



2. 透過的プロキシ サーバーを使用する場合: 透過的プロキシ

REMOTE_ADDR = 最後のプロキシ サーバーの IP HTTP_VIA = プロキシサーバー IP

HTTP_X_FORWARDED_FOR = 実際の IP。複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.98.182.163、203.129.72.215。


このタイプのプロキシ サーバーは依然としてあなたの情報を訪問者に転送するため、あなたの本当の身元を隠すという目的を達成することはできません。

3. 通常の匿名プロキシ サーバーを使用する場合: 匿名プロキシ

REMOTE_ADDR = 最後のプロキシ サーバー IP HTTP_VIA = プロキシ サーバー IP

HTTP_X_FORWARDED_FOR = プロキシ サーバーIP が複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.98.182.163、203.129.72.215。


実際の IP を隠しますが、プロキシ サーバーを使用してアクセスしていることを対象者に明らかにします。

4. 欺瞞的なプロキシ サーバーの使用: プロキシの歪曲

REMOTE_ADDR = プロキシ サーバー IP HTTP_VIA = プロキシ サーバー IP

HTTP_X_FORWARDED_FOR = ランダム IP、複数のプロキシ サーバーを経由する場合、この値は 203.98.182.163、203.98.182.163、203.129.72.215 のようになります。


訪問者に、プロキシ サーバーを使用していることを伝えますが、実際の IP の代わりに偽のランダム IP を作成して騙します。

5. 高匿名性プロキシ サーバーを使用する場合: 高匿名性プロキシ (エリート プロキシ)

REMOTE_ADDR = プロキシ サーバー IPHTTP_VIA = 値がないかどうか表示される

HTTP_X_FORWARDED_FOR = 値がないか、表示されません。複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.98.182.163、203.129.72.215。


プロキシ サーバーを使用してオブジェクトに直接アクセスしているのと同じように、すべての情報をプロキシ サーバーの情報で完全に置き換えます。

6. クライアントの実際の IP アドレスを取得する例:

function get_real_ip()
{
    $ip=FALSE;
    //客户端IP 或 NONE 
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    }
    //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
        if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
        for ($i = 0; $i < count($ips); $i++) {
            if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
                $ip = $ips[$i];
                break;
            }
        }
    }
    //客户端IP 或 (最后一个)代理服务器 IP 
    return ($ip ? $ip : $_SERVER[&#39;REMOTE_ADDR&#39;]);
}
以上がこの記事の全内容です。 learning. その他の関連コンテンツ PHP 中国語 Web サイトにご注意ください。

関連する推奨事項:

ファイルを圧縮および解凍するための php コード


PHP クラス ライブラリ PHPqrCode を使用して、 2 つの QR コードを生成します

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

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