ホームページ  >  記事  >  バックエンド開発  >  phpはクライアントの実際のIPを取得します

phpはクライアントの実際のIPを取得します

巴扎黑
巴扎黑オリジナル
2016-11-23 13:50:40896ブラウズ

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($_COOKIE, EXTR_SKIP);
@extract ( $_POST, EXTR_SKIP);
@extract($_GET, EXTR_SKIP);
@extract($_ENV, EXTR_SKIP); で利用できます。 PHP マニュアル これは、事前に定義された変数であることを意味します; HTTP_x_FORWARDED_FOR については、インターネットでいくつかの情報を見つけて、次のように述べました
クライアントの IP アドレスを取得するには、PHP で $_SERVER["REMOTE_ADDR"] を使用しますが、クライアントがプロキシを使用している場合サーバーからアクセスすると、実際のクライアント 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 ヘッダー メッセージを判断し、存在する場合はそのうちの 1 つを取得します。

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