PHP で現在のフル URL を取得
-
PHP で現在の URL を取得するには
http_build_url()
を使用する -
PHP で現在の URL を取得するには
$_SERVER[]
を使用する -
PHP で現在の URL を取得するには
$_SERVER['HTTPS']
を使用する - PHP でパラメータを含む現在の URL を取得する
- まとめ
このチュートリアルでは、PHP のプログラミング言語で現在のフル URL を取得する方法を紹介しています。PHP のフル URL を取得するためには、多くのユースケースが考えられます。クエリのパラメータに基づいてウェブページの内容をレンダリングする必要があります。ページ全体をリダイレクトしたり、リフレッシュしたりする必要があるかもしれません。したがって、Web プログラミングを行う上では、フル URL は重要な値となります。
ここでは、PHP プログラミングでフル URL を取得するさまざまな方法について説明します。
一般に、現在実行中のページの完全な URL を取得するために知っておく必要のあるいくつかの手順があります。これらを以下に示します。
- URL を文字列形式で保存する PHP 変数を作成する必要があります。
- サーバーが HTTPS を有効にしているかどうかを確認する必要があります。有効になっていれば、URL の文字列に
HTTPS
を追加する必要があります。HTTPS が有効になっていない場合は、URL の文字列にHTTP
を追加する必要があります。 - また、URL に
://
シンボルを追加する必要があります。 - サーバの HTTP_HOST 名を追加する必要があります。HTTP_HOST 名はリクエストしたホスト名で、例えば
www.google.com
、www.exampledomain.com
などです。 - URL 文字列に REQUEST_URI を追加する必要があります。REQUEST_URI はリクエストしたリソースで、例えば
/index.php
などです。
では、PHP プログラミングのエコシステムで現在の完全な URL を取得する最も効率的な方法をいくつか紹介します。
PHP で現在の URL を取得するには http_build_url()
を使用する
この方法はとても簡単です。PHP 組み込み関数の http_build_url()
を利用します。このメソッドは HTTP と HTTP の両方で動作します。
$link = http_build_url();
この関数は URL を作成するために使用します。この関数には、4つのパラメータを指定することができます。
url
です:このパラメータは URL を文字列または連想配列の形で表します。戻り値は parse_url() と同様です。parts
:このパラメータは最初の引数と同じです。flags
:バイナリ HTTP_URL 定数のビットマスクです。new_url
:このパラメータが設定されている場合は、HTTP_URL を指定します。このパラメータが設定されている場合、parse_url()
が返すように構成された URL の部分が埋められます。
全体として、このメソッドは成功すれば新しい URL を文字列として返し、失敗すれば False
を返します。
PHP で現在の URL を取得するには $_SERVER[]
を使用する
もう一つの方法は、$_SERVER[]
というグローバル変数を使用することです。$_SERVER
は現在のページの URL を取得するために使われる PHP の組み込み変数です。また、スーパーグローバル変数でもあります。したがって、すべてのスコープで常に利用可能です。
以下の例に示すように、パラメータ REQUEST_URI
を変数に渡すだけです。
例:
$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$_SERVER[HTTP_HOST]
はホスト名または https://www.delftstack.com/ のようなドメイン名を表します。$_SERVER[REQUEST_URI]
represent URI like/dashboard/phpinfo.php
PHP で現在の URL を取得するには $_SERVER['HTTPS']
を使用する
ここでは、PHP で現在の URL を取得するための別の明示的なハードコード形式を示します。
グローバル変数 $_SERVER['HTTPS']
は HTTPS の状態を表します。したがって、これを isset()
関数の中で使用して HTTPS が存在するかどうかを調べることができます。これにより、URL で HTTPS が有効になっているかどうかを知ることができます。一方、$_SERVER['HTTPS']
の値を調べることで、URL に “https “を付加するかどうかを決めることができます。
どちらの例も HTTPS を検出していることを示しています。下の例は長い形式です。
$link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
または、以下の例のように短い形式を使用することもできます。
$link = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
PHP でパラメータを含む現在の URL を取得する
パス、パラメータ、クエリ文字列を含む全体の URL を取得するには、以下の例のように http_build_url()
を利用します。
$all_in_address_bar = http_build_url();
まとめ
このチュートリアルでは、PHP プログラミングで現在の URL を取得する最も効率的な方法のいくつかを実演しました。この例は、フォーマット、メカニズム、使用される構文を理解するのに役立つことでしょう。現在の URL を取得するために最もよく使われるテクニックは、スーパーグローバル変数 $_SERVER
を使用することです。これを使用すると、構文の書式を完全に制御することができます。しかし、このテクニックは他のものに比べて少し複雑です。さて、現在の URL を取得する方法を決めるのは、あなたの PHP プログラミングのシナリオに基づいて、どの方法が最も適しているかを決めるのはあなた次第です。特定の 1つを使用して、異なるユースケースと効率があるかもしれません。最良のオプションは、それらのそれぞれを試してみて、あなたのプログラミングシナリオのための最も柔軟で効率的なものと一緒に行くことかもしれません。