アクセスされているページが分かる!PHPでURLを取得する方法【初心者向け】

プログラミング初心者向けにPHPで現在アクセスされているページのURLを取得する方法について解説しています。$_SERVER変数を使うことでサーバーに格納している情報を取得することができます。書きながら覚えていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PHPでは、今現在ブラウザでアクセスしているURLを取得することが出来ます。

この取得したURLをアクセスランキングとして計測したり、URLの内容によってデータベースへ問い合わせて、ページの表示内容を変えることも出来ます。

URLを取得するには、PHPのスーパーグローバル変数である$_SERVERを利用します。$_SERVERにはヘッダ情報、パス情報、スクリプトの位置のような情報が格納されています。このスーパーグローバル変数には、PHPプログラムならどこからでも参照することが出来ます。

 

大石ゆかり

田島メンター!1つのWebサイトにいろいろページってあると思うんですけど、今見られているページのURLってどうやって分かるんですか?

田島悠介

つまり、アクセスしてるページを確認したいってことだよね!?

大石ゆかり

そうです!!

田島悠介

$_SERVER変数を使うとサーバーに関する情報を取得できるからやり方を詳しく説明するね♪

 

アクセスされているページのURLを取得する書き方

URLは、おおざっぱに「プロトコル名://ホスト名/ページ名」で構成されています。

アクセスされているページ自体のURLを取得する方法

$_SERVER["REQUEST_URI"]

httpやhttpsなどのプロトコル名やサーバーのドメイン名(ホスト名)を除いた、ページURLが入っています。リクエストは要求という意味なので、ブラウザに要求されたURI(URL)の一部という意味になります。

アクセスされているページのホスト名を取得する方法

$_SERVER["HTTP_HOST"]

サーバーのドメイン名を表示します。URLは、プロトコル名+ドメイン名+ページ名の形になっています。

アクセスされているページのプロトコル名を取得する方法

(empty($_SERVER["HTTPS"]) ? "http://" : "https://")

httpやhttpsなどのプロトコル名を表示します。HTTPSではなかったら、$_SERVERのHTTPSは空になっています。
空だったらhttpを、そうではなかったらhttpsを表示するようにします。

三項目演算子は、「?」が真だった場合。「:」が偽だった場合になります。emptyはもし変数が空だったら真で、空でなかったら偽という意味になります。

 

実際に書いてみよう

実際に書いて出力結果を見てみましょう。

ファイル名・・・test3.php

<?php
echo $_SERVER['REQUEST_URI'];
echo "<br>";
echo $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
echo "<br>";
echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://") . 
$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
?>

実行結果

/test/test3.php
 localhost/test/test3.php
 ​http://localhost/test/test3.php

localhostの/test/フォルダのtest3.phpで実行しました。ページ自体のURLが/test/test3.phpになっています。

ホスト名がlocalhost。プロトコルがhttpになっています。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

まとめ

以上、URLを取得する流れを解説しました。

閲覧されているページを確認することができるので、ぜひ書き方を覚えておきましょう。

 

大石ゆかり

$_SERVERって便利なんですね!

田島悠介

そうだね!いろんな情報が入ってるから役に立つ変数だと思うよ!

大石ゆかり

ありがとうございますっ!

 

また、PHPを勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。