
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セッションIDを取得したい
-
会社への勤怠届出にGoogleフォ...
-
助けて下さい!!セッション変...
-
コンピュータへの接続数が最大...
-
ASPで別ページにPOSTで送信した...
-
getParameterで値が取得できず...
-
PageLoadの後にJavascript実行...
-
c# 文字列の最後から1文字削除...
-
VBAで一時中断したプログラムの...
-
戻ると、記入フォームの内容が...
-
ページングが大量発生する原因...
-
システム開発の工数と費用について
-
asp.NET初心者です。「 ’Contex...
-
Accessの画面更新を一時的に停...
-
ポストバック(__doPostback)へ...
-
dos画面が一瞬立ち上がる
-
シングルサインオンの方法
-
複数のヤフーIDの画面ウィンド...
-
ASP.NET による画面遷移で質問...
-
ただいま勉強始めたての初心者...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コネクション・セッション・ト...
-
DVD-Rの「セッションを閉じる」...
-
コンピュータへの接続数が最大...
-
JSPでポップアップウィンド...
-
ASP.net MVC セッションハイジ...
-
画像のようにユーザーが登録し...
-
CDRのデータ復旧
-
会社への勤怠届出にGoogleフォ...
-
セッションIDを取得したい
-
SSLを使用したページのセッショ...
-
ブラウザの×(閉じる)ボタンの...
-
セッション管理
-
ルータのPPPのランプの色が変
-
ブラウザを閉じずにセッション...
-
セッションハイジャックの対策...
-
思うように セッションの破棄...
-
Dreamweaver+PHP+MySQL・オスス...
-
PHPのセッションについて
-
セッション変数の破棄と再設定
-
接続可能セッションについて
おすすめ情報