現在ページのURLを取得したい・・・
▼ 例えばこういう感じで
1 |
https://example.com/hoge?a=1&b=2 |
PHPでこういう場面がありました。
ただやり方を忘れがちなので、
ここでは PHPで現在ページURL取得方法 を紹介。
コード例と一緒に残しておきます。
このページの目次
現在ページの完全フルURL取得の手順
1.まずプロトコル(http/https)から調べる
一般的に次のどちらかです。
- http
- https
この取得には次のサーバー変数を調べます。
▼ $_SERVER['HTTPS'] について
'HTTPS' スクリプトが HTTPS プロトコルを通じて実行されている場合に 空でない値が設定されます。
引用元 : https://www.php.net/manual/ja/reserved.variables.server.php
これが空なら http:// から始まるURL、逆に何かセットされているなら https:// から始まるURLということが分かる訳です。(他プロトコルについては無視)
具体的にはこういうコードです。
▼ プロトコルの取得コード
1 |
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')) ? "https://" : "http://"; |
少し長ったらしいですね・・・
でもプロトコル取得はこれでOK。
URL取得に一歩近づきました。
2.サーバーのHTTPホスト名取得
お次はホスト名を取得します。
▼ $_SERVER['HTTP_HOST'] について
'HTTP_HOST' 現在のリクエストに Host: ヘッダが もしあればその内容。
引用元 : https://www.php.net/manual/ja/reserved.variables.server.php
この変数から "example.com" のようなホストが参照可能。「もしあれば」とあるので、ヘッダが偽装されていた時は正しく取得できません。とはいえ特殊なケースなので気にする必要はないかも
3.クエリ含むリクエストURIを取得
最後にリクエストURIを取得します。
▼ $_SERVER['REQUEST_URI'] について
'REQUEST_URI' ページにアクセスするために指定された URI。例えば、 '/index.html'
引用元 : https://www.php.net/manual/ja/reserved.variables.server.php
これでホスト名(例 : example.com)を含まないURL部分(例 : /hoge/fuga/)が取得可能。ちなみに /hoge/fuga?a=1&b=2 のようにクエリ文字列もそのまま受け取ることが可能です。
具体的なページURL取得のPHPコード例
ここまでの手順をまとめると・・・
こういうコードでページURLが取得できます。
▼ 現在ページ取得のコード例
1 |
$page_url = (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ) ? "https://" : "http://").$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; |
▼ もっと便利に関数化するならこう
1 2 3 4 5 6 |
/** * 現在ページのフルURLを返す **/ function get_current_page_url(){ return (((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ) ? "https://" : "http://").$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; } |
こういう感じですね。
少し煩雑ですが、関数化すれば問題なし。
ちなみにJavaScriptの場合は・・・
ここからは蛇足
JavaScriptでもフルURLは取得できます。
しかもPHPなんかより遥かに簡単です。
▼ 例えば一番簡単なコード例
1 2 |
var url = location.href; console.log('url : ', url); |
このコードのように location.href を参照するだけ。
これだけでクエリも含む完全URLが取得可能です。
まあ次の情報を個別に調べることもできます。
- プロトコル
- ホスト名
- ポート番号
- ホストを含まないパス
- クエリパラメータ
詳しくは次記事とかでもまとめました。
▼JavaScriptで現在ページのURLなどの情報を調べる方法
気になる方はご覧ください。
以上、PHPでのページのフルURL取得でした。
ではまた。バイバイ ($・・)/~~~