0

ユーザーが「http://www.example.com/login#/settings」をブックマークしたとします。そのユーザーがログアウトしているときにこのページにアクセスしようとすると、まずログインページにリダイレクトしてから、この方法を使用してブックマークされたページにリダイレクトする必要があります

http://www.example.com/authenticate/login?continue=http://www.example.com/login#/settings

ノート:

  • MVC アーキテクチャを使用しています
  • HTTP_REFERER以外の方法はありますか?

ユーザーがhttp://www.example.com/login#/settingsを入力すると、コントローラーファイルの# アンカーを含む URL 全体を読み取りたいのですが、URLを設定できるのは私だけです

http://www.example.com/authenticate/login?continue=http://www.example.com/login#/settings

それで、どうすればいいですか??

4

2 に答える 2

0

ユーザーにどのように表示するかによって異なります。単純なリダイレクトの場合はheader、HTTP ロケーション ヘッダーの送信に使用します

header("Location: http://www.google.com/");

ユーザーをリダイレクトする前に短いメッセージを読む時間を与えたい場合は、headerHTTP リフレッシュ ヘッダーを送信するために使用できます。

header( "Refresh: 5; url=newpage.php" ); 

編集:アンカーをキャプチャするには、JavaScript を使用する必要があります。その情報は PHP では利用できません。その場合、JavaScript を使用してアンカーをキャプチャする場合は、リダイレクトを JavaScript で記述することもできます。

編集 2:おそらく他のオプションは、継続をプログラムに渡すときに、アンカーも別のGET変数として送信することです。したがって、URI は次のようになります。

http://www.example.com/authenticate/login?continue=http://www.example.com/login&anchor=settings#/settings

次に、それを使用$_GET['anchor']して の値に連結し$_GET['continue']ます#

$uri = $_GET['continue'] . "#" . $_GET['anchor'];
于 2012-08-01T05:08:16.033 に答える
0

PHP 内から# の後の部分を読み取ることはできません。そのためには JavaScript を使用する必要があります。たとえば、次のように使用できます。

window.location.hash

ハッシュ部分がある場合はその場所を特定します (ハッシュがない場合は ''、ある場合は '#something' になります)。次に、これをリクエスト内の非表示フィールドとしてコントローラーに送信できます。

于 2012-08-01T05:21:27.547 に答える