web-dev-qa-db-ja.com

前のページに戻る( "Location:") PHPに

この質問の題名は私の質問を説明しています。 header( "Location: URL of previous page" );を使用してPHPページの訪問者を前のページにリダイレクトする方法

110
Web_Designer

試してみてください。

header('Location: ' . $_SERVER['HTTP_REFERER']);

これは安全なページ(HTTPS)ではうまくいかないかもしれませんし、ヘッダが乗っ取られてユーザを他の目的地に送ることができるので全体的にかなり悪い考えです。ヘッダはブラウザによって送信されないかもしれません。

理想的には、次のいずれかを行います。

  • リターンアドレスをクエリ変数としてリクエストに追加します(例:?back =/list)
  • あなたのコードでリターンページを定義してください(すなわち、すべての成功したフォーム送信はリスティングページにリダイレクトします)。
  • 次に行きたい場所の選択肢をユーザーに提供します(例:保存して編集を続ける、または単に保存する)。
223
Dimitry

とてもシンプルなのでこれを使うだけ

header("location:javascript://history.go(-1)");

その私のためにうまく働く

21
Hammad

どういうわけかその場所を保存する必要があります。

それがPOSTフォームであるとしましょう。隠されたフィールドに現在の場所を入れて、それをheader()の場所で使うだけです。

13

ちょっと追加しておきます。exitを追加するのが一般的で知られていることだと思います。残りのコードをロードまたは実行したくない場合に備えて、ヘッダー関数の後に...

header('Location: ' . $_SERVER['HTTP_REFERER']);
exit;
9
6opko

Javascriptでこれを試してみてください。

 $previous = "javascript:history.go(-1)";

あるいは、PHPで試すこともできます。

if(isset($_SERVER['HTTP_REFERER'])) {
    $previous = $_SERVER['HTTP_REFERER'];
}
2
Minu Alex

ユーザーが複数のページを右クリックしてから戻って保存する可能性があるため、セッション変数に以前のURLを格納するのはよくありません。

セッション変数内の前のURLをフォーム内の隠しフィールドに保存し、ヘッダーを保存した後( "Location:呼び出しページのURLを保存")以外。

1
rudy