【PHP】参照元URLを取得する方法

PHPを使って参照元URL(リファラー)を取得する方法について解説します。参照元URLは、現在のページにアクセスする前にユーザーがいたページのURLを示します。この情報は、アクセス解析やリダイレクト処理などに利用することができます。

$_SERVER[‘HTTP_REFERER’]を使用して参照元URLを取得する

PHPでは、$_SERVERスーパーグローバル変数を使ってサーバーに関する情報を取得できます。参照元URLを取得するには、$_SERVER[‘HTTP_REFERER’]を使用します。以下は、参照元URLを取得する基本的なコードです。

<?php
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : 'リファラー情報がありません';
echo "参照元URL: " . $referer;
?>

このコードでは、$_SERVER[‘HTTP_REFERER’]が設定されているかどうかを確認し、存在する場合はその値を取得して表示します。設定されていない場合は、「リファラー情報がありません」というメッセージを表示します。

参照元URLが取得できない場合の対策

ブラウザやセキュリティ設定によっては、リファラー情報が送信されないことがあります。その場合、$_SERVER[‘HTTP_REFERER’]は空になることがあります。これを考慮して、取得できない場合の対策を行うことが重要です。以下は、リファラーが存在しない場合にデフォルトのページにリダイレクトする例です。

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

if ($referer) {
    echo "参照元URL: " . $referer;
} else {
    header("Location: /default-page.php");
    exit;
}
?>

セキュリティに関する注意点

参照元URLは信頼できる情報ではないため、セキュリティに関する配慮が必要です。特に、リダイレクトやアクセス制御にリファラー情報を利用する場合は、悪意のあるユーザーによって情報が偽装される可能性があります。以下の点に注意して、適切な対策を講じることが推奨されます。

  • リファラー情報を信頼せず、追加の検証やフィルタリングを行う。
  • 重要な処理には、リファラー情報以外の信頼できる方法を使用する。

まとめ

PHPを使用して参照元URLを取得する方法について解説しました。$_SERVER[‘HTTP_REFERER’]を使うことで、簡単にリファラー情報を取得できますが、情報が取得できない場合やセキュリティ面に注意を払いながら適切に活用することが重要です。