web-dev-qa-db-ja.com

一時的なリダイレクトは、検索エンジンからの元のページリクエストのURLを検出し、そのページに再度リダイレクトする必要があります

あなたが私のクライアントのサイトに来たら、あなたが21歳以上であることを確認する必要があります。ドメインのページにアクセスすると、検証済みの年齢Cookieが設定されているかどうかが確認されます。そうでない場合は、チャレンジページに移動して生年月日を入力します。その後、インデックスページ(または間違った答えをした場合は拒否ページ)に移動します。

私が遭遇した問題は次のとおりです。
ユーザーが検索エンジンでページのいずれかを見つけた場合、年齢テストに合格した後、元々リクエストしていたページに戻すにはどうすればよいですか?

例:
ユーザーはGoogleでwww.example.com/blog.phpを見つけ、リンクをクリックすると、www.example.com/age_verify.phpにリダイレクトされます。テストに合格した後、デフォルトのwww.example.com/blog.phpの代わりにwww.example.comに返送するにはどうすればよいですか?

私は困惑しています。私はHTTPリファラーを扱っていると確信していますが、どのくらいの能力があるのか​​わかりません。

1
Brandon

リファラーに依存しないでください。 URLはクエリ文字列パラメーターとして、またはセッションパラメーターとして保存できます。

  1. ユーザーがblog.phpにアクセスします。このページは、年齢Cookieを確認します。
  2. 年齢Cookieが存在しない場合は、現在のURLを次のようなクエリ文字列パラメーターとして保存します-/age_verify.php?returnURL=blog.php。または、セッションパラメータにURLを保存します。
  3. ユーザーをage_verifyにリダイレクトします
  4. 年齢を確認した後、クエリ文字列またはセッションからURLを抽出し、別のリダイレクトを実行します。
1

Age_verify.phpでは、変数のリファラーである$ _SERVER ['HTTP_REFERER']、たとえば$ refererを保存する必要があります。

そこから取得する方法は複数ありますが、単純な方法の1つは、Cookieを設定してage_verify.php?ref = $ refererを呼び出すことです(GETフォームで簡単に実行できます)。

Age_verify.phpから出力が行われる前に、Cookieを確認し、Cookieがある場合は$ refererにリダイレクトする必要があります。これはheader( "Location:$ referer")を使用して行われます。

0
Itai