フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHP】参照元URL(リファラ)を取得する方法

PHP
リファラ
参照元URL

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

WEBサイト制作をしている時、参照元URL(リファラ)がどこのページなのか、気になったことありませんか?
またシステム仕様によっては参照元URL(リファラ)によって処理を分岐したいという機会もあるかもしれません。

今回の記事ではどのページから遷移してきてページを開いたのか、参照元URL(リファラ)を取得する方法をご紹介します。

参照元URL(リファラ)を取得する方法

いきなりですが、参照元URL(リファラ)を取得するにはPHPで以下のように記述します。

<?php echo $_SERVER['HTTP_REFERER']; ?>

この記述でどのページから現在のページに遷移してきたのかを確認することが出来ます。

参照元URL(リファラ)を取得して出来ること

特定のURLからのアクセスは除外する

特定のURLからのアクセスを除外するには以下のように記述します。

<?php

// 除外するURLを指定
$block_url = "https://xxxxxxxxxx.jp";

$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

if (strpos($referer, $block_url) !== false) {
    exit;
}

// 以下に通常の処理を続行

?>

ログを出力する

ログに遷移元を記録するには以下のように記述します。

<?php
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

// ログに遷移元を記録
error_log("Referer: $referer");
?>

参照元URL(リファラ)が取得できないケース

参照元URL(リファラ)は絶対に取得できるというわけではありません。

HTTPSサイトからHTTPサイトへの遷移の場合、参照元URL(リファラ)を取得することは出来ません。
その他にも参照元URL(リファラ)を取得出来ないケースはいくつか存在するようなので注意が必要です。

また参照元URL(リファラ)はChromeやFirefoxのブラウザツールで簡単に書き換えることが可能です。
そのため、あまり信用しすぎるのはよくないかもしれません。
あくまで参考程度として、厳密に参照元(リファラ)を取得する必要がある場合は他の方法で取得することも検討しましょう。

まとめ

いかがでしたか?
PHPを使うことで簡単にどこのページから遷移してきたのか・参照元URL(リファラ)を取得することが出来ます。
ただし、これで取得出来る情報を信用しきるのは危険です。
参考程度に参照元URL(リファラ)を確認する方法として覚えておく程度にしましょう。