PHP で現在のページの URL アドレスを取得する方法は非常に簡単です。関連関数を使用して完全なページの URL アドレスを取得する例をまとめます。
PHP の事前定義変数 $_SERVER は、ヘッダー、パス情報、スクリプトの場所を含む配列です。配列のエンティティは Web サーバーによって作成されます。
$_SERVER 配列を使用すると、URL のフルパスと実際のパスを取得でき、それらを自由に使用できるようになります。
$_SERVER['SERVER_NAME'] // スクリプトが現在実行されているサーバーホストの名前。
$_SERVER[SERVER_PORT'] //ユーザーがサーバーに接続するために使用するポート。
$_SERVER['REQUEST_URI'] //ホスト名を除く、現在実行中のスクリプトのリクエスト URL。
$_SERVER['DOCUMENT_ROOT'] //現在実行中のスクリプトが配置されているドキュメント ルート ディレクトリ。
URL の例: http://xsooo.com/Test/Test.php
$_SERVER['SERVER_NAME']: xsooo.com
$_SERVER['SERVER_PORT'] : 80
$_SERVER['REQUEST_URI'] : /Test/Test.php
$_SERVER['DOCUMENT_ROOT'] : /home/var/www/xsooo.com/htdocs
したがって、完全な URL パスは次のとおりです:
コードをコピー | |
echo 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?> |
1. デフォルトの http ポートは 80 であるため、通常、$_SERVER['SERVER_PORT'] には完全な URL パスが含まれません。もちろん、特殊な場合は特別に処理されます。
2. ホスト名を取得するために $_SERVER['REMOTE_HOST'] を使用する人もいますが、その意味は次のとおりです: 現在のページを閲覧しているユーザーのホスト名 (この変数は Web サーバーによって作成される必要があります)。
拡張子:$_SERVER['REMOTE_HOST']のnull値の解決策
Apache サーバー設定ファイル httpd.conf の HostnameLookups を On
に変更します。ここでは、アドレスバーの URL とファイルが属するパスの取得に関する情報をまとめたいと思います。
$_SERVER[ ] を使用すると、さまざまなことができます。これは、ヘッダー、パス情報、スクリプトの場所を含む配列であり、配列のエンティティは Web サーバーによって作成されます。
これは「スーパーグローバル」、または自動グローバル変数として説明できます。これは、すべてのスクリプトで機能することを意味します。 $HTTP_SERVER_VARS の場合のように、関数またはメソッド内でアクセスするためにグローバル $_SERVER を使用する必要はありません。
$HTTP_SERVER_VARS には同じ情報が含まれていますが、自動グローバル変数ではありません。 (注意: $HTTP_SERVER_VARS と $_SERVER は異なる変数であり、PHP はそれらを異なる方法で処理します。) register_globals ディレクティブが設定されている場合、つまり $_SERVER 配列と $HTTP_SERVER_VARS 配列が分離されている場合、これらの変数はすべてのスクリプトでも使用できます。
$_SERVER['HTTP_HOST'] 現在のリクエストの Host: ヘッダーの内容を取得します
$_SERVER['PHP_SELF'] これは、現在呼び出されているページのファイル名を返します。http://localhost/test/2005/test.php の場合、/test は次のようになります。 /2005/test.php
が返されました。
$_SERVER['SCRIPT_NAME'] 現在のスクリプトを含むパスを返します。これは、ページがそれ自体を指す必要がある場合に便利です
$_SERVER['SCRIPT_FILENAME'] 現在のファイルの絶対パス情報を返します
$_SERVER['REQUEST_URI'] は、このページにアクセスするために必要な URI (「/」を含む) を返します
もちろん多くのパス関数があります:
basename() はパスの基本的なファイル名部分を返します。もちろん、出力を制御するためにサフィックスを設定することもできます。
realpath()、パス情報の完全に正規化されたパスを返します