web関連

【PHP】サイト内にひとつ前のページに戻るボタンを実装

【PHP】サイト内にひとつ前のページに戻るボタンを実装

ブラウザには実装されている「戻るボタン」に似た機能をサイト内に実装した時の備忘録

やること

  • サイト内にブラウザ標準実装されている「戻るボタン」に似た機能を実装
    ※外部サイトや直リンクで来たときは非表示(外部サイトに戻っちゃうから)
  • リファラ(どのページからやってきたかどうかがわかるデータ)を使用して外部か直か条件分岐

ひとつ前にアクセスしたページ戻るボタンを実装するコード

<?php
$hostname = $_SERVER['HTTP_HOST'];//ドメインを取得
if (!empty($_SERVER['HTTP_REFERER']) && (strpos($_SERVER['HTTP_REFERER'],$hostname) !== false)) {
	echo '<a href="' . $_SERVER['HTTP_REFERER'] . '">戻る</a>';
}
?>

やっていることは、ドメイン名を取得して条件分岐でリファラ(リンク元)が空(直リンク)じゃなく、かつリファラの文字列内に自サイトのドメイン名が入っていれば「戻るボタン」を表示する

なんか調べていてリファラを取得できる「$_SERVER[‘HTTP_REFERER’]」色々使えるじゃんって思ったけど、リファラって偽装が簡単だったり、リンク元を正確に取得できなかったりするみたいで容易に手を出さないほうがよさそう
今回みたいにサイト内に戻るボタンを実装する程度であればよさげだけどね

静的なサイトで各ページに戻るボタンを用意するんだから直接そのページの一つ上のページのリンク貼ればいいじゃん階層浅いんだからって思ったけど、リファラ使えばこのコードを共通で事足りるんだと納得
スマホにしろPCにしろ戻るボタンブラウザに実装してるんだからデザインに取り組む意図については聞きそびれたけど…でも、どのページから来たのかで表示を分けたいときなんかに使えるからどこかでかつかうかなぁ

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。