REMOTE_ADDR は、10 など、訪問者のローカル接続に設定された IP のみを取得できます。プロキシ サーバーを使用すると、プロキシ サーバーの IP ではなく、訪問者のゲートウェイの実際の IP を取得します。 IP アクセスが制限されている Web ページにこの機能を適用すると、IP アクセスが制限されたセグメント内のプロキシ サーバーを経由しても、他のユーザーはそのページにアクセスできなくなります。
以下の関数が提供されます:
リーリーgetenv("REMOTE_ADDR") はクライアントの IP アドレスを取得するために使用されますが、クライアントがプロキシ サーバーを使用してアクセスする場合、取得されるのはプロキシ サーバーの IP アドレスであり、実際のクライアントの IP アドレスではありません。プロキシ サーバー経由でクライアントの実際の IP アドレスを取得するには、getenv("HTTP_X_FORWARDED_FOR") を使用して読み取ります。
ただし、クライアントがプロキシサーバー経由でアクセスしない場合、getenv("HTTP_X_FORWARDED_FOR") で取得した値は空になります。
リーリーは、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") 行のステートメントは実行されません。
この場合、クライアントがプロキシサーバーを使用していないことが確認されているため、
リーリーこれら 2 行のステートメントは、クライアントの IP アドレスを取得します。これは実際の IP アドレスでもあります。