本ページはHIGA TSUBASAが属する個人プロジェクト「COFUS」内のBLOGコンテンツです。

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

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

HIGA TSUBAS

Frontend Engineer HIGA TSUBAS

1992年生まれ、沖縄県育ち、現在大阪暮らし。フリーなフロントエンドエンジニアとしてコーディング案件をメインに行いながら、Web制作・Webサイト運営・ツール制作などの活動を行っています。

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

リファラ $_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;

RECOMMEND 関連する記事