112

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

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

4

5 に答える 5

139

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

session_start();

if ( !isset( $_SESSION["origURL"] ) )
    $_SESSION["origURL"] = $_SERVER["HTTP_REFERER"];
于 2009-12-08T04:28:14.693 に答える
18

Johnathan が提案したように、Cookie またはセッションに保存する必要があります。

最も簡単な方法は、セッション変数を使用することです。

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

それをページの上部に置くと、サイト訪問者が誘導された最初のリファラーにいつでもアクセスできます.

于 2009-12-08T04:30:36.217 に答える
4

現在の閲覧セッションの間だけ存続する Cookie に保存する

于 2009-12-08T04:29:02.590 に答える
4

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

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

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

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

$var = $_COOKIE['origin_ref'];

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

于 2017-01-08T07:12:28.610 に答える