PHPで元のURLリファラーを取得しますか?


110

$_SERVER['HTTP_REFERER'];リファラーURLを取得するために使用しています。ユーザーが別のページをクリックしてリファラーが最後のページに変わるまで、期待どおりに機能します。

元の参照URLを保存するにはどうすればよいですか?

回答:


137

Cookie(状況に応じて許容できる場合)またはセッション変数に格納します。

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];

13
以下の回答で@pcpのアドバイスに注意してください!
d -_- b

6
http_referer存在しないことが多いため、存在するかどうかも確認する必要があります。これにより、「未定義のインデックス」エラーが発生する可能性があります。
ジャスティン2014年

17

ジョナサンが提案したように、あなたはそれをクッキーかセッションに保存したいでしょう。

より簡単な方法は、Session変数を使用することです。

session_start();
if(!isset($_SESSION['org_referer']))
{
    $_SESSION['org_referer'] = $_SERVER['HTTP_REFERER'];
}

これをページの上部に配置すると、サイトの訪問者が指示した最初のリファラーにいつでもアクセスできるようになります。


4

現在のブラウジングセッションでのみ有効なCookieに保存する


4

Cookieは参照ページのリポジトリとしてCookieを使用する方がはるかに優れています。Cookieはブラウザーが閉じられるまでリファラーを保持するため(ブラウザーのタブが閉じられても保持されます)、ユーザーがページを開いたままにした場合は、週末の前に、数日後に戻った場合、セッションはおそらく期限切れになりますが、Cookieはまだ残っています。

そのコードをページの先頭に配置します(Cookieはエコー/印刷の前にのみ適切に設定されるため、html出力の前に):

if(!isset($_COOKIE['origin_ref']))
{
    setcookie('origin_ref', $_SERVER['HTTP_REFERER']);
}

その後、後でアクセスできます。

$var = $_COOKIE['origin_ref'];

また、@ pcpが$ _SERVER ['HTTP_REFERER']のエスケープについて提案したことに加えて、Cookieを使用する場合は、リクエストごとに$ _COOKIE ['origin_ref']をエスケープすることもできます。


-4

これを試して

(isset ($_SERVER['HTTP_CLIENT_IP']) ? 
    $_SERVER['HTTP_CLIENT_IP'] : 
    (isset ($_SERVER['HTTP_X_FORWARDED_FOR']) ? 
        $_SERVER['HTTP_X_FORWARDED_FOR'] : 
        $_SERVER['REMOTE_ADDR']
    )
)

これは取得についてですIP ADDRESSが、投稿は問題のREFERERページへと導いたウェブページについてです。
Sanxofon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.