ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルでユーザーの IP アドレスを取得する良い方法

php_PHP チュートリアルでユーザーの IP アドレスを取得する良い方法

WBOY
WBOYオリジナル
2016-07-13 10:39:30798ブラウズ

REMOTE_ADDR は、10 などの訪問者のローカル接続に設定された IP のみを取得できます。プロキシ サーバーは、プロキシ サーバーの IP ではなく、訪問者のゲートウェイの実際の IP を取得します。 IP アクセスが制限されている Web ページにこの機能を適用すると、IP アクセスが制限されたセグメント内のプロキシ サーバーを経由しても、他のユーザーはそのページにアクセスできなくなります。

以下に関数が提供されています:

コードをコピーします コードは次のとおりです:


// 関数 getIP() を定義します
function getIP()
{
global $ ip;

if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR"); getenv("REMOTE_ADDR" ))
$ip = getenv("REMOTE_ADDR");

return $ip;

// 使用法:

?>


getenv("REMOTE_ADDR") はクライアントの IP アドレスを取得するために使用されますが、クライアントがプロキシ サーバーを使用してアクセスする場合、取得されるのは実際のクライアント IP ではなく、プロキシ サーバーの IP アドレスです。住所。プロキシ サーバー経由でクライアントの実際の IP アドレスを取得するには、getenv("HTTP_X_FORWARDED_FOR") を使用して読み取ります。

ただし、クライアントがプロキシサーバー経由でアクセスしない場合、getenv("HTTP_X_FORWARDED_FOR")で取得した値は空になります。


コードをコピーします

コードは次のとおりです:
else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR")
は if getenv("HTTP_ X _FORWARDED_FOR" ) 取得された値 空でない場合 (つまり、クライアントがプロキシ サーバーを使用している場合)、変数 $ip は getenv("HTTP_X_FORWARDED_FOR") によって取得された実際の IP 値と等しくなります。

上記の else if(getenv("HTTP_X_FORWARDED_FOR")) で取得した値が空の場合 (つまり、プロキシ サーバーが使用されていない場合)、次の $ip = getenv("HTTP_X_FORWARDED_FOR") 行のステートメントは実行されません。 。
この場合、クライアントがプロキシサーバーを使用していないことが確認されているので、

から



までのコードをコピーします。コードは次のとおりです:
else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR" );
これらの 2 行のステートメントは、クライアントの IP アドレス (実際の IP アドレスでもあります) を取得します。



http://www.bkjia.com/PHPjc/730059.htmlwww.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/730059.html技術記事 REMOTE_ADDR は、訪問者のローカル接続に設定された IP (10 など) のみを取得できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。