PHPで現在ページのフルURLを取得するには

現在ページのURLを取得したい・・・

▼ 例えばこういう感じで

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ということが分かる訳です。(他プロトコルについては無視)

具体的にはこういうコードです。

▼ プロトコルの取得コード

少し長ったらしいですね・・・

でもプロトコル取得はこれで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が取得できます。

▼ 現在ページ取得のコード例

▼ もっと便利に関数化するならこう

こういう感じですね。

少し煩雑ですが、関数化すれば問題なし。

ちなみにJavaScriptの場合は・・・

ここからは蛇足

JavaScriptでもフルURLは取得できます。

しかもPHPなんかより遥かに簡単です。

▼ 例えば一番簡単なコード例

このコードのように location.href  を参照するだけ。

これだけでクエリも含む完全URLが取得可能です。

まあ次の情報を個別に調べることもできます。

  • プロトコル
  • ホスト名
  • ポート番号
  • ホストを含まないパス
  • クエリパラメータ

詳しくは次記事とかでもまとめました。

▼JavaScriptで現在ページのURLなどの情報を調べる方法

気になる方はご覧ください。

以上、PHPでのページのフルURL取得でした。

ではまた。バイバイ ($・・)/~~~

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください