- 締切済み
ページを更新できないようにするには
Rubyで掲示板システムを作成しています。 CGIでフォームで書き込みをした後に表示されたページで,ページの再読込をすると,再び書き込まれた風になってしまいます。CGIの処理の方法は, Web上: 掲示板のフォーム内のhiddenフォームでCGIのcase文で書き込みを行うプログラムへ移行するように値を設定してある。送信ボタンを押すと,CGIを呼び出し, ↓ CGI上: hiddenの値から,書き込みのプログラムであるとcase文で分岐させ,受け取ったフォームの値を書き込む。書き込んだ後,そのプログラムから掲示板を表示するプログラムを呼び出し,printでHTMLソースを渡す。 ↓ Web上: 掲示板が表示される。 (CGIのプログラムは書き込みも表示も同じファイルで行い,その動作はhiddenフォーム内のmodeの値で分岐してある) のような流れになっています。printで表示されているので,ブラウザのurlに,書き込みの動作を行うhiddenフォームの値その他の入力されたデータが残っているからだと思います。 そこで,ブラウザの方から更新(できれば戻る,進むも)を使えないようにできないでしょうか。 ご教授お願いいたします。 (ちなみにCGIのプログラムの方で再読込をしても書き込まれないようにできるのでしょうか)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kalze
- ベストアンサー率47% (522/1092)
ブラウザの方でというのは、できたとしても、ユーザーがはずせますので、2重投稿チェックを処理として実装するほうが普通かとおもいます。 掲示板が表示されるの部分で、リロードすると、そのページを表示したときのデータがすべて再送されますから、再度呼ばれることになります。 通常は、 ・時間や過去の書き込み最新○件に同じ項目がないかチェックする ・データの受け取り処理をした後に、リダイレクトで表示させる 前者は、2重投稿防止にも役にたちます。 後者は、リダイレクトしているので、リロードしても、通常の表示用アクセスをしてくるだけになります。 ということで、通常は、CGIの法でリロード対策をするもの、かと。
お礼
ご教授ありがとうございます。 やはり,システムの方でプログラム制御した方がよいみたいですね。 ただ,戻る,進むボタンの制御はしたいなと考えていますので,もし分かりましたら教えていただけないでしょうか。