ブラウザの「戻る」ボタンを押したときの移動先

このQ&Aのポイント
  • ブラウザの「戻る」ボタンを押したとき、送信フォームがあるページで再読み込みされる問題について
  • 送信フォームからのデータ送信後、ブラウザの「戻る」ボタンを押すと再読み込みされる問題に対する解決方法
  • PHPで生成されたページで、ブラウザの「戻る」ボタンを押しても前のページに直接移動させる方法
回答を見る
  • ベストアンサー

ブラウザの「戻る」ボタンを押したときの移動先

送信フォームがあるページで、<form action="" method="post">としています。このフォームから送信した場合、送信後、同じページがもう一度読み込まれると思うのですが、そこでブラウザの「戻る」ボタンを押すと、当然送信前のページ(=同じページ)に移動して、もう一度押すとその前に表示していたページに戻ります。 送信後にブラウザの「戻る」を押したときに同じページをもう一回表示せずに、その前に表示していたページに直接移動させるようなことは、可能でしょうか? $_SERVER['HTTP_REFERER']を使って「戻るリンク」を設置することはできるのですが、今回は、ブラウザの「戻る」ボタンの動作の話です。 ページはPHPで生成しています。

  • sr-ki
  • お礼率68% (43/63)
  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 一例として、tokenを発行するという手法もあります。 tokenが一致しない、または存在しない場合、別の画面にリダイレクトさせます。

sr-ki
質問者

お礼

回答ありがとうございます。 tokenというのをはじめて知りました。 どのようなものか全くわからないので少し調べてやってみます。 アドバイスありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ブラウザの「戻る」を実行した場合基本的にはブラウザが勝手に判断して処理します。 ブラウザがキャッシュしかみないなら別ページに飛ぶことは難しいでしょう。

sr-ki
質問者

お礼

回答ありがとうございます。 やはりブラウザ側で処理しているんですね。。 No.2の方の回答をヒントに一度やってみたいと思います。 どうもありがとうございました。

関連するQ&A

  • webブラウザを開かないで移動しない方法教えてください

    PHP又はjvascriptでプログラムを作成しています。 <form action=~ で送信すると webブラウザが別ページに移動されますが、 webブラウザを開かないで移動しない方法を考えています。 教えていただけないでしょうか?

  • パスワードの保存

    フォームからログインした場合にブラウザにパスワードを保存するを表示する方法ってありますか? 例えばグーグルクロームだと、ブラウザの上のほうに「パスワードを保存しますか?」とでますよね? しかし、ログインしてもその表示がでません ログインページから<form action="" method="post">で同じページに送信して、ログインしたらheader('Location: index.php');でページ移動させています

    • ベストアンサー
    • PHP
  • フォーム送信後の更新ボタンでも$_POST変数が初期化されない

    フォームのサブミット後にプログラムが走るようになっているtest.phpがあるのですが、フォーム送信後に更新ボタンを押しても再度ポストされるようになってしまっています。 ブラウザの更新ボタンを押したときには、ポストせずにフォームをクリアしたいのですが、どうすればできますでしょうか? <form method="post" action="<?php print($_SERVER['PHP_SELF']); ?>"> <input type=text name=aaa> <input type="submit" name="submit" value="submit"> </form> <?php if($_POST['submit']) { 処理 } ?>

    • ベストアンサー
    • PHP
  • FORMで送信ボタンと戻るボタンを2つつけてそれぞれ遷移先を変えたい

       以下のような画面を作りたいのですが↓ -------------------------------------------------------------------------------- ● a.php (ユーザ情報入力画面) ※フォームに入力する画面    <FORM method="POST" action="b.php">   <INPUT type="text" name="mail">   <INPUT type="submit" name="submit" value="確認">  </FORM> ● b.php (ユーザ情報入力確認画面)※フォームに入力された値を表示する画面  <FORM method="POST" action="c.php">   <!-- ここには、フォームに入力された値を表示する -->   <INPUT type="submit" name="submit" value="登録"> // c.php に遷移する   <INPUT type="submit" name="submit" value="戻る"> // a.php に戻る  </FORM> ● c.php (完了画面) -------------------------------------------------------------------------------- b.php について質問なのですが、 b.phpにおいて、登録ボタンと戻るボタンを2つつけて、 それぞれ遷移先を変えたいのですが、どうすればいいんでしょうか・・・? <FORM method="POST" action="c.php">と書いてしまうと、 戻るボタンを押しても戻らずに、c.phpに遷移してしまいますよね?? こういう場合ってJavaScriptとかで遷移先を指定するんですか・・? もしそうでしたら、JavaScriptがよくわからないので できればサンプルコード示していただけると助かります・・・。   

  • ボタン無しでフォーム内容送信

    <form name="regist" action="bbs.cgi" method="POST"> <input type="hidden" name="mode value="admin"> <textarea name=comment cols=50 rows=5 wrap=soft>コメント</textarea> <input type="submit" value="ボタン"> </form> 通常はボタンをクリックして移動しますが、送信ボタンを使わずに、bbs.cgiを表示しただけでフォーム内データを送信できればと考えています。どのようにすればいいのでしょうか。

  • ラジオボタンでフォームの送信先を切り替える

    <script type="text/javascript"> <!-- function setDisabledTextbox(F,N1,N2,N3) { if(N1 == "OrderPayment0") { F[N2].disabled = true; F[N3].disabled = false; } else { F[N2].disabled = false; F[N3].disabled = true; } } //--> </script> //フォームの1の記述 <form method="post" action="送信先1"> //ラジオボタン1の記述 <input type="radio" name="payment1" value="値1" onclick="setDisabledTextbox(this.form,this.id,'tbox0','tbox1')" <?php if($payment_name == "値1") echo "checked"; ?> id="OrderPayment0" /> <label for="OrderPayment0">値1</label><br /> //ラジオボタン2の記述 <input type="radio" name="payment2" value="値2" onclick="setDisabledTextbox(this.form,this.id,'tbox0','tbox1')" <?php if($payment_name == "値2") echo "checked"; ?> id="OrderPayment1" /> <label for="OrderPayment1">値2</label><br /> 送信1の入力フォームの記述 <input type="submit" name="tbox0" value="送信1" disabled /> </form> //フォームの2の記述 <form method="post" action="送信先2"> 送信2の入力フォームの記述 <input type="submit" name="tbox1" value="送信2" disabled /> </form> 上記の記述で、最初、送信ボタン1及び送信ボタン2をdisabled状態にしておいて、ラジオボタンの1が押されたら送信ボタンの1を活性化、ラジオボタンの2を押したら送信ボタンの2を活性化するというように切り替えたいのですが、今のところ送信ボタンの1の切り替えはうまくいっているのですが、送信ボタンの2の方がdisabledされたままにまります。フォームの有効範囲の問題かな?と思って、ラジオボタンの2の記述をフォームの2の記述の方に移してみたりしたのですが、結果は同じようです。 両方とも切り替えるようにするには、どのように記述すればよいのでしょうか? 御教示願えればと思います。

  • PEARのQuickFormを用いて同一ページ内で複数フォーム設置について

    PEARのQuickFormを用いて同一ページ内に2つのフォームを 設置したいのですが、一方のフォームの送信ボタンを押すと、 両フォームとも確認画面で確認表示となってしまいます。 他方のフォームはそのままフォームを出力させたいのですが。 それから下記のように二つのフォームに、 重複する項目(mailaddress)があります。 mailaddressという変数名はDBのカラム名でもあり、変更できません。 ボタンを押したフォームのみ、確認表示されるようにはできませんでしょうか? <form method="post" action="***.php" name="formA"> ID:{$form.mailaddress.html} PASS:{$form.pass.html} {$form.submit.html} </form> <form method="post" action="***.php" name="formB"> メールアドレス:{$form.mailaddress.html} お問い合わせ内容:{$form.toiawase.html} {$form.submit.html} </form>

    • ベストアンサー
    • PHP
  • 一つのフォームでボタンにより別々のactionを実行するには

    GETでもPOSTで構いませんが、通常フォームの基本は、 ---- <form method="post" action="CGIのURI"> ..(input要素) <input type="submit" value="送信" /> </form> ---- となっていまして、「送信」ボタンを押すとCGIに送信されるようになっています。 この送信ボタンを「送信1」「送信2」とし、それぞれ送信されるCGIが別々なURLに送信したいと思っています。 つまりinput要素で入力しているフィールドを共通化して使いたいと思っています。 このような方法ってできるのでしょうか?どなたかご存知であればご教授ください。

    • ベストアンサー
    • HTML
  • ブラウザーの戻るボタンを押して戻ったときのみJavaScriptを実行したい

    スタートページ[1]がありSubmitボタンを押すと、そこから別のページへ[2]リンクし、[3]等へつながります。 [2]や[3]等から[1]にブラウザーの戻るボタンを教えて戻った場合にとあるJavaScriptのコードを実行したいのですが、戻った際にページの再読込をなるべくさせずに行いたいです。 現在、Submitボタンを押すと同時に押したときのパラメータをCookieにも保存してあります。 方法としては以下の2パターンが考えられますが、いずれも方法が分かりません。 ・ページの表示が再び有効になる際、cookieにデータがあればそのデータを使う。 ・ブラウザーの戻るボタンを押した事を判定するコードを使ってフォームを再現する。 御指南頂けませんでしょうか。お願いします。 -------------------------------------------------- 何をしているかといいますと、DHTMLで複数のselectフォームを左から順に、前の項目によって次の項目の内容が変化する、というものを作りました。ですがフォーム送信した後、ブラウザーの戻る機能を使ってフォームのあるページに戻ると元々は[選択してください]という項目しかないために存在しないSelectボックスのOptionIndexを参照され、空白となってしまうのを避けたいのです。(new Optionを利用)

  • ブラウザのURL表示に関して

    質問なんですが、テキストフォームに文字を入力して次の画面に遷移した場合、ブラウザのURLに入力した引数が表うじされてしまいますが、これを非表示するにはどうすればいいでしょうか? ちなみにソースは以下です。一部分は割愛してます。 送信ボタン押してブラウザのURL表示をみると http://127.0.0.1/02.phtml?age=23 になってしまう <form action="02.phtml"> <input type="text" name="age"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP