php によって取得される不正確な IP は、ユーザーがプロキシを使用していることが原因である可能性があるため、「$_SERVER['REMOTE_ADDR']」はユーザーの実際の IP を認識できません。解決策は、「X-Forwarded-実際の 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 サイトの他の関連記事を参照してください。