0

SOと非常によく似た方法でページをmod_rewriteします。コントローラーとして機能するものwww.example.com/users/login/を内部で使用します。users.login.phpログインが完了したらリダイレクトするページとしてパラメータを渡したいです。

相対URLを渡すと、代わりにquestions/次のようなものを渡すため、非常に独特なURLになります。users/login/questions/login.php?redir=questions.php

URLをひどく汚染することなくこれをうまく解決する方法についてのコメントや解決策はありますか?SOがそれを処理した方法は、「質問をする」ページにログインフォームを置くことだったと思います。それが解決策だと思いますが、他の可能性を探しています。

編集:これまでのところ、使用すること$_SERVER['HTTP_REFERER']が最善の解決策のようです。使わない理由はありますか?リファラーを偽造することはできますが、実際に損害を与える可能性はありますか?

4

3 に答える 3

3

私はURLを含むログインフォームの隠しフィールドを使用します、そしてそれは私のために働きます。あなたもそれを試すことができます。

  1. 非表示の入力フィールドを作成します。
  2. 入力フィールドの値をに設定します$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
  3. 投稿されたURLを取得し、ユーザーをそのURLにリダイレクトします。

注:HTTP_REFERERは常に設定されているわけではありません。

于 2009-01-27T18:10:08.750 に答える
1

訪問した前のページを保存するためのベストプラクティスは、$_SESSIONグローバルを使用することです。HTTP_REFERER統計以外の目的で使用すると、リファラーを簡単に偽造できるため、ユーザーの悪用が求められます。

複数のセッションIDをCookieに保存する方法については、このリンクを確認してください。 http://bytes.com/groups/php/7630-handling-multiple-sessions

于 2009-01-27T18:47:01.203 に答える
0

のようなURLを使ってみません/users/login/?r=/questions/か?または、URLを使用して差出人住所を取得したくない場合は、HTTPリファラーを使用できます。

于 2009-01-27T18:29:01.100 に答える