• ベストアンサー

フォームデータをlocation.replaceで次のページに渡すには

php+mysqlで会員制のサイトを作っており、 javascriptも使っているのですが、 行き詰ってしまいましたので、助けてください。 投稿をインプット→確認→データ登録→終了 のように処理させているのですが、 ブラウザの"戻る"ボタンを押すと、不都合が生じるので、 投稿のページの履歴を残さないようにしたいと思います。 そのためにlocation.replaceを使えば、履歴を残さず、 次のページに進むことができるのですが、 フォームのデータを次のページに渡すことができません。 すみませんが、 履歴を残さずに、フォームデータを次のページに渡す方法を、 教えていただけないででょうか。

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

  • ベストアンサー
noname#19175
noname#19175
回答No.3

> ブラウザの"戻る"ボタンを押すと、不都合が生じるので、 まずはこの不都合をなくすところから始めるべきだと思います。 > フォームとセッションを同時に使うのは邪道なのでしょうか? 邪道も何も、セッションを使うかフォームの<input type="hidden">に押し込むかのどちらかしかありません。 フォームをシンプルにするならセッション(クッキー)一択ですね。 たとえば、このOKWave(教えてGoo)でも、セッションを使ってログイン状態を保ち、 フォームを使って投稿内容を処理しています。 > 履歴を残さずに、フォームデータを次のページに渡す方法を、 JavaScriptを使って良いなら(というかlocation.replaceはJavaScript前提ですが) window.openや<IFRAME>にデータを送信して、セッション情報を更新、 window.openerやwindow.parentをlocation.replaceで読み直したときに、サーバーはセッション情報から表示すべきデータを取得、HTMLに出力できます。 (説明下手ですね。すみません) いわゆるAjaxを使えば、画面の遷移が完全に無くなるページが出来ます。 (いろいろ面倒なので、あまりおすすめはしません)

その他の回答 (3)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.4

がるです。 手厳しい意見で大変に恐縮ではあるのですが。 > データをフォームとセッションに分けて、次ページに引き渡しているため、 > 戻るボタンを押した場合、フォームのデータは問題ないのですが、セッションのデータが最新のままで戻ってしまい、予期せぬ動きになってしまいます。 こういった状況の場合、例えば「悪意ある人間からのアクセス」によって、意図しない動きや、平たく言って脆弱性となりうるモノが発生しえるかと。 > フォームとセッションを同時に使うのは邪道なのでしょうか? フォームとセッションは粒度の違うものなので、同時に使うのは別によいと思うのですが、 > データをフォームとセッションに分けて、次ページに引き渡し というのはあまり好ましくないかと。何ゆえに「全データをセッションに保存しておく」ではまずいのでしょうか? データを「複数種類の挙動の違う場所へ格納する」事は、よほど設計に気をつけないと、用意に齟齬を生んでしまうものなので。 多分、そのあたりの基礎設計を一度見直されるとよろしいかと思います。

xyz_1990
質問者

お礼

この、補足のところに書いた方法で、うまくいきました。 皆様、ありがとうございました。

xyz_1990
質問者

補足

No.3さんのご回答と合わせて、返事させていただきます。 ページ間で引渡している変数を整理してみたのですが、 この部分の設定がまずかったようなので、次のように、改善してみたいと思います。                現状        改善案 表示画面のパラメータ GET ログイン管理      セッション ページ履歴管理    セッション -> GET 入力フォーム      POST 入力チェック用フラグ セッション -> POST これで、まずい点等ある場合、ご教授いただけるとありがたいです。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。 大変に厳しい内容で恐縮ではあるのですが。 > ブラウザの"戻る"ボタンを押すと、不都合が生じるので、 の部分の「不都合」をきちんと修復すべきです。 そうしないと、予想外の不具合や攻撃に見舞われますので。

xyz_1990
質問者

補足

ご回答ありがとうございます。 おっしゃるように、その不都合が解消できればいいのですが、 データをフォームとセッションに分けて、次ページに引き渡しているため、 戻るボタンを押した場合、フォームのデータは問題ないのですが、セッションのデータが最新のままで戻ってしまい、予期せぬ動きになってしまいます。 フォームとセッションを同時に使うのは邪道なのでしょうか? (phpの質問になってしまいますが。。。)

  • nipox
  • ベストアンサー率32% (10/31)
回答No.1

onSubmitでイベントをハンドルします。 そこでURLを、 xxx.php?xxx=yyy&zzz=aaa という形の、ちょうど、GETで、取得するような形にします。 そして、リプレースすれば完璧です。

xyz_1990
質問者

補足

ご回答ありがとうございます。 すみません、できれば、POSTで処理したいのですが。。。 絶対にPOSTじゃないとだめというわけでもないのですが、 なんとかならないでしょうか?

関連するQ&A

専門家に質問してみよう