![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
php+mysqlで会員制のサイトを作っており、
javascriptも使っているのですが、
行き詰ってしまいましたので、助けてください。
投稿をインプット→確認→データ登録→終了
のように処理させているのですが、
ブラウザの"戻る"ボタンを押すと、不都合が生じるので、
投稿のページの履歴を残さないようにしたいと思います。
そのためにlocation.replaceを使えば、履歴を残さず、
次のページに進むことができるのですが、
フォームのデータを次のページに渡すことができません。
すみませんが、
履歴を残さずに、フォームデータを次のページに渡す方法を、
教えていただけないででょうか。
No.3ベストアンサー
- 回答日時:
> ブラウザの"戻る"ボタンを押すと、不都合が生じるので、
まずはこの不都合をなくすところから始めるべきだと思います。
> フォームとセッションを同時に使うのは邪道なのでしょうか?
邪道も何も、セッションを使うかフォームの<input type="hidden">に押し込むかのどちらかしかありません。
フォームをシンプルにするならセッション(クッキー)一択ですね。
たとえば、このOKWave(教えてGoo)でも、セッションを使ってログイン状態を保ち、
フォームを使って投稿内容を処理しています。
> 履歴を残さずに、フォームデータを次のページに渡す方法を、
JavaScriptを使って良いなら(というかlocation.replaceはJavaScript前提ですが)
window.openや<IFRAME>にデータを送信して、セッション情報を更新、
window.openerやwindow.parentをlocation.replaceで読み直したときに、サーバーはセッション情報から表示すべきデータを取得、HTMLに出力できます。
(説明下手ですね。すみません)
いわゆるAjaxを使えば、画面の遷移が完全に無くなるページが出来ます。
(いろいろ面倒なので、あまりおすすめはしません)
No.4
- 回答日時:
がるです。
手厳しい意見で大変に恐縮ではあるのですが。
> データをフォームとセッションに分けて、次ページに引き渡しているため、
> 戻るボタンを押した場合、フォームのデータは問題ないのですが、セッションのデータが最新のままで戻ってしまい、予期せぬ動きになってしまいます。
こういった状況の場合、例えば「悪意ある人間からのアクセス」によって、意図しない動きや、平たく言って脆弱性となりうるモノが発生しえるかと。
> フォームとセッションを同時に使うのは邪道なのでしょうか?
フォームとセッションは粒度の違うものなので、同時に使うのは別によいと思うのですが、
> データをフォームとセッションに分けて、次ページに引き渡し
というのはあまり好ましくないかと。何ゆえに「全データをセッションに保存しておく」ではまずいのでしょうか?
データを「複数種類の挙動の違う場所へ格納する」事は、よほど設計に気をつけないと、用意に齟齬を生んでしまうものなので。
多分、そのあたりの基礎設計を一度見直されるとよろしいかと思います。
この回答への補足
No.3さんのご回答と合わせて、返事させていただきます。
ページ間で引渡している変数を整理してみたのですが、
この部分の設定がまずかったようなので、次のように、改善してみたいと思います。
現状 改善案
表示画面のパラメータ GET
ログイン管理 セッション
ページ履歴管理 セッション -> GET
入力フォーム POST
入力チェック用フラグ セッション -> POST
これで、まずい点等ある場合、ご教授いただけるとありがたいです。
No.2
- 回答日時:
がると申します。
大変に厳しい内容で恐縮ではあるのですが。
> ブラウザの"戻る"ボタンを押すと、不都合が生じるので、
の部分の「不都合」をきちんと修復すべきです。
そうしないと、予想外の不具合や攻撃に見舞われますので。
この回答への補足
ご回答ありがとうございます。
おっしゃるように、その不都合が解消できればいいのですが、
データをフォームとセッションに分けて、次ページに引き渡しているため、
戻るボタンを押した場合、フォームのデータは問題ないのですが、セッションのデータが最新のままで戻ってしまい、予期せぬ動きになってしまいます。
フォームとセッションを同時に使うのは邪道なのでしょうか?
(phpの質問になってしまいますが。。。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- Chrome(クローム) Chromeのアドレスバーに履歴等を表示させないようにしたい 2 2022/09/08 14:20
- PHP PHP ページング データベース 1 2022/06/16 10:30
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- その他(ブラウザ) おすすめのブラウザ 教えてほしい 5 2023/06/06 11:00
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コネクション・セッション・ト...
-
パスワードつきホームページ ト...
-
ディスクのセッションを閉じる...
-
ASPで別ページにPOSTで送信した...
-
CD-Rに保存したデジカメ画像が...
-
会社への勤怠届出にGoogleフォ...
-
安全にログイン状態を記憶させ...
-
DVD-Rの「セッションを閉じる」...
-
javaでのアクセスカウント
-
Javascriptでページ内容全体を...
-
エクセルにカウンターを設置したい
-
ポストバック時の画面スクロー...
-
複数選択のListBoxでClickイベ...
-
Pen と Pens の違い
-
javaのメイン関数 public stati...
-
PHPでログイン機能実装
-
タブを閉じる時メッセージを表...
-
Access2003のフォーム画面にて
-
Webページ上のボタン等の位置を...
-
Ctrlキーを押しながらのダブル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コネクション・セッション・ト...
-
コンピュータへの接続数が最大...
-
会社への勤怠届出にGoogleフォ...
-
DVD-Rの「セッションを閉じる」...
-
ブラウザの×(閉じる)ボタンの...
-
ブラウザを閉じずにセッション...
-
セッションIDを取得したい
-
DVDの中身が表示されません。
-
WCFのwsDualHttpBindingについて
-
ASP.NET 電卓計算
-
ルータのPPPのランプの色が変
-
CD-Rに追記したときに消え去っ...
-
自分のPCへアクセスしているコ...
-
JSPでポップアップウィンド...
-
遠隔操作されてる?
-
ショッピングカートのプログラ...
-
別ブラウザにセッションを渡す...
-
セッション変数の破棄と再設定
-
javaでのアクセスカウント
-
WebBrowserを初期化
おすすめ情報