PHPでユーザークライアントの実際のIPを取得する方法

怪我咯
リリース: 2023-03-12 19:18:02
オリジナル
1058 人が閲覧しました

クライアントの実際の IP を取得するためのアイデアの一部の分析は正しくない可能性がありますが、少なくとも精度ははるかに優れています。

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

function GetIP(){ 
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 
$ip = getenv("HTTP_CLIENT_IP"); 
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
$ip = getenv("REMOTE_ADDR"); 
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
$ip = $_SERVER['REMOTE_ADDR']; 
else 
$ip = "unknown"; 
return($ip); 
}
ログイン後にコピー

regist=off問題
if ($register_globals!=1) {
@extract($_SERVER, EXTR_SKIP);
@extract($_COOKIE, EXTR_SKIP);
@extract($_SESSION, EXTR_SKIP);
@extract($_FILES, EXTR_SKIP); EXTR_SKIP) ;
}
このうち、REMOTE_ADDR は事前に定義された変数であると記載されており、HTTP_x_FORWARDED_FOR については、
$_SERVER["REMOTE_ADDR" を使用する) と書かれています。 ] PHP でクライアントの IP アドレスを取得しますが、クライアントがプロキシ サーバーを使用してアクセスする場合、取得されるのはプロキシ サーバーの IP アドレスであり、実際のクライアントの IP アドレスではありません。プロキシ サーバー経由でクライアントの実際の IP アドレスを取得するには、$_SERVER["HTTP_X_FORWARDED_FOR"] を使用して読み取ります。
ただし、すべてのプロキシ サーバーが $_SERVER["HTTP_X_FORWARDED_FOR"] を使用してクライアントの実際の IP を読み取ることができるわけではないことに注意してください。このメソッドで読み取られる IP の一部は、依然としてプロキシ サーバーの IP です。
HTTP_CLIENT_IP に関しては、「HTTP_CLIENT_IP」はユーザーの IP、「HTTP_X_FORWARDED_FOR」はプロキシの IP であるという投稿があります。
これらの IP ヘッダー メッセージは利用できない可能性があります (異なるブラウザーや異なるネットワーク デバイスが異なるメッセージを送信する可能性があるため)。 IP ヘッダー メッセージ)。したがって、PHP は各 IP ヘッダー メッセージを判断し、存在する場合はそのいずれかを取得します。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!