この記事では、PHPでサーバーのIPアドレスを正確に取得する方法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:
PHP では、通常、$_SERVER['HTTP_HOST'] を使用して、URL 内の Web サイトのドメイン名または IP アドレスを取得します。
PHPマニュアルの説明は以下の通りです。
「HTTP_HOST」
ホストの内容: 現在のリクエストのヘッダー情報。
一般的に、この方法で問題が発生することはありません。PFC3 や FLEA などの一部の一般的な PHP フレームワークも、この事前定義された変数に基づいています。
しかし、最近取り組んでいたプロジェクトで、テストのためにプログラムを顧客に渡すときに、プログラムのジャンプが常に失敗することがわかりました。
最後に理由を見つけます: お客様の環境では、$_SERVER['HTTP_HOST'] によって取得される値は常に、LAN 内でプログラムが配置されているサーバーの IP 値です。
その理由は、お客様の会社がサーバーを介してインターネットに接続されており、プログラムが配置されているサーバーがドメイン名を介してマッピングされているためです。つまり、途中に「プロキシ」プロセスが存在します。
したがって、そのような環境では、$_SERVER['HTTP_HOST'] によって取得される値は常に、LAN 内でプログラムが配置されているサーバーの IP 値になります。
最後に、多くの情報を確認し、symfony フレームワークでの代替実装方法を見つけました:
次のようにコードをコピー: $host = $_SERVER['HTTP_HOST'];
次のように置き換えます:
コードをコピー コードは次のとおりです: $host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER[' HTTP_HOST'] : '');
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/1011249.html