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

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

(*-*)浩
(*-*)浩オリジナル
2019-09-30 11:54:366178ブラウズ

#php でクライアント IP アドレスを取得する方法

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

1. プロキシ サーバーを使用しない場合

REMOTE_ADDR = クライアント IP HTTP_X_FORWARDED_FOR = 値がないか、表示されません (推奨学習:

PHP ビデオ チュートリアル )

$ip = $_SERVER['REMOTE_ADDR'];

2. 透過プロキシを使用します

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


HTTP_X_FORWARDED_FOR = クライアントの実際の IP (複数のプロキシ サーバーを経由する場合、この値は同様です: 221.5.252.160、203.98.182.163、203.129.72.215)

このタイプのプロキシは、クライアントの実際の IP もリクエスト オブジェクトに送信しますが、実際の IP を隠すことはできません。


$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

3. 通常の匿名プロキシ サーバーを使用します

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


HTTP_X_FORWARDED_FOR = プロキシ サーバー IP (複数のプロキシ サーバーを通過する場合、この値は同様になります: 203.98.182.163、203.98.182.163、203.129.72.215)

これによりクライアントの実際の IP が隠蔽されますが、サーバーはクライアントがプロキシ サーバーを通過することを認識します。アクセスされました。


4. 不正なプロキシ サーバーを使用する

REMOTE_ADDR = プロキシ サーバー IP


HTTP_X_FORWARDED_FOR = ランダム IP (複数のプロキシ サーバーを経由する場合、この値は同様です: 220.4.251.159、203.98.182.163、203.129.72.215)

サーバーはプロキシ サーバー経由のアクセスを識別できますが、偽の IP がターゲット サーバーに送信されます。


5. 匿名性の高いプロキシを使用します

REMOTE_ADDR = プロキシ サーバーの IP HTTP_X_FORWARDED_FOR = 値がない、または表示されません


これを使用します。異なるプロキシ、異なるブラウザ、異なるデバイスを使用する場合、異なる IP ヘッダー情報が返されるため、$_SERVER["REMOTE_ADDR"] および $_SERVER["HTTP_X_FORWARDED_FOR"] を使用して PHP によって取得される値は、null 値または「不明」になる可能性があります。 " 価値。


PHP は次のように IP コードを取得します:

public function ip() {
    //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $ip = $_SERVER[&#39;REMOTE_ADDR&#39;];
    }
    $res =  preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
    echo $res;
    //dump(phpinfo());//所有PHP配置信息
}

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

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