Now Loading...
menu
  • すべて
  • カメラのこと
  • 写真のこと
  • 旅
  • モノ
  • おすすめツール
  • WEBのこと
  • 撮影スポット
  • みんなの写真展

前のページに戻る?戻らない?ボタンをphpで実装してみた。

前のページに戻る?戻らない?ボタンをphpで実装してみた。

JavaScript の history.back を使うと前のページに戻れるんですが・・

 

外から来た人は、外に出て行っちゃいます。元いたところに戻るのだから、そりゃそうだ。

 

サイトの中で他のページを見てくれるようにするには「前のページに戻る」ボタンはとても親切。

ですが、外から来てくれたときに外に戻るのではなくボタン隠したいな。

せっかくサイトに来てくれたのにさよならの出口を用意することになっちゃうのでなんとかしたい。

 


どこから来たの?をリファラ情報で識別

サーバへリクエストした際、どのページからリクエストされたのか、直前に閲覧したページのURLがリクエストヘッダの中に記録されています。

サイトへの流入経路の判定など、アクセス解析でも使われてるこのリファラ情報、jsやphpで取得できるので、これを使って判定。

 

ん?

リファラ?

リクエストって何?という方、とってもわかりやすいこちらをどうぞ。

リファラ (referer) :: 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

 

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典、だいすきです。

難しいことをわかりやすく書いてくれていて、いつもお世話になってます。

 


phpでやるよ

スーパーグローバル変数「$_SERVER[‘HTTP_REFERER’]」使ってみました。

 

<?php 
if (!empty($_SERVER['HTTP_REFERER']) && (strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) !== false)) :?>
 <div class="post-detail-button is_prev">
<a href="<?= $_SERVER['HTTP_REFERER'] ?>">前のページに戻る</a>
</div> <?php endif ?>

 

サイト内のどこかのページから来た時は「前のページに戻る」ボタンを表示して、そうでない場合はボタンを非表示に。

 

そうでない場合というのは、ブックマーク、メール、他サイトなどのリンクから飛んで来たときや、検索からの流入で、サイトの中からではなく外から来たとき。そういうときは「前のページに戻る」ボタンを非表示にしています。

 

URLの情報は $_SERVER 変数の中に格納されていて、$_SERVER['HTTP_HOST']; でドメイン名を取得。

リファラが取れないケースもあるので「!empty($_SERVER[‘HTTP_REFERER’])」っていうふうにして、「strpos」で文字列チェック、見つからなかった場合にはfalseを返しています。

 

記述長いかなー。短くしてみよう。

 

<?php
// これは上の方に書いたよ
$h = $_SERVER['HTTP_HOST'];
$r = $_SERVER['HTTP_REFERER']
?>
<?php
// これがボタンの記述だよ
if (!empty($r) && (strpos($r, $h) !== false)) :
?>
 <div class="post-detail-button is_prev">
<a href="<?= $r ?>">前のページに戻る</a>
</div> <?php endif ?>

 

見やすくなったね。

 


 

前のページへ戻るときに、ブラウザバックで戻るユーザーも多いと思いますが、そこに押したくなるようなボタンがあったら押してくれるのかもしれません。

もっと見るとか、関連した記事が出てくるとか、サイトの中をずーっと見てくれるような楽しい道筋を用意しておくって大事なことなのかも。

 

 

share on