コフス技術ブログ

PHPにてリファラを取得してローディング画面の出し分けを行う

この記事はにメンテナンスが行われています。

例えばトップページにローディング画面(またはスプラッシュ画面)を構えている時で、下層ページから戻ってきた場合には出さない仕様にする、といった場合はリファラで判断してあげると簡易に実装が出来ます。

リファラ $_SERVER['HTTP_REFERER'] 処理
別ドメインの時 ローディング画面を出す
同一ドメインの時 ローディング画面は出さない

ローディング画面がリソースの読み込みの為の時間稼ぎ、または単なる演出の為だけの存在の場合、下層ページから戻ってきた時は不要な場合も多いと思います。

簡易的に例を載せますとこんな形です。※ コーディング規約はPSR2

define('DOMAIN', 'cofus.work');

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

if (!(preg_match('|^https?://' . DOMAIN . '|', $referer))) {
    // 別ドメインの時、ローディングを出す.
    require_once '/parts-loading.php';
}

if-elseの形にしてあげれば別ドメインの時と同一ドメインの時で処理を変更することも簡単です。

ちなみにWordPressサイトの場合はsanitize_text_fieldwp_unslashでエスケープしないとコーディング規約違反になるので、リファラを取得する部分を以下の様にしてあげるといいでしょう。

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