問題
phpで現在のURLを取得するには?
解決策
「(empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']」で取得できる。
「$_SERVER」による現在のURLの取得
phpで「$_SERVER」を使い、現在のURLを取得する方法をご紹介します。
プロトコル、ホスト名、ページ自体のURLを取得してつなげる。
プロトコル(http:// または https://)とホスト名(例:keylopment.com)とページ自体のURL(例:/faq/1999/)をそれぞれ取得し、それらをつなげることで現在のURLとして取得することができます。
それぞれを取得するために、「$_SERVER」を使用します。
「$_SERVER」のパラメータの一例
パラメータを含めた記述 | 内容 | 取得できる値の例 |
---|---|---|
$_SERVER[‘HTTPS’] | HTTPSプロトコルを通じて実行されている場合(URLがhttps://~の場合)に、空でない値が返されます。 | 「https://」ならば空でない値、「http://」ならば空の値 |
$_SERVER[‘HTTP_HOST’] | ホスト名を取得します。 | keylopment.com |
$_SERVER[“REQUEST_URI”] | ページ自体のURLを取得します。 | /faq/1999/ |
プロトコルを取得します。
「$_SERVER[‘HTTPS’]」を使って、返ってくる値が空でなければ「https://」、空ならば「http://」を設定します。
if( !empty($_SERVER['HTTPS'] ) ){
$protocol = 'https://';
}else{
$protocol = 'http://';
}
ホスト名、ページ自体のURLを取得し、3つをつなげます。
先ほどのプロトコル情報とホスト名とページ自体のURLをつなげて、現在のURLとして取得します。
$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
出力例:http://keylopment.com/faq/1999/
参考ページ
以下のサイトが、より詳しく解説してくれています。
【phpで現在のURLを取得する方法! | CodeCampus】
https://blog.codecamp.jp/php-request-url
コメント