掲示板に1度書込みした後にReloadすると、「再投稿しますか?」が出るの防ぐには?

[上に] [前に] [次に]
HERO [E-Mail] 1998/05/01(金) 01:08:48
Perlで書かれた掲示板ですが、1度書込みをした後に掲示板のページへ戻り、Reloadすると、「再投稿しますか?」のメッセージボックスが出力されて、「OK」か「キャンセル」以外出来なくなります。
そうすると、ページの更新の為に、一度他の場所に行って帰ってくるみたいな事をやらなくならず、手間なので防止したいのですが、そういった情報をクリアする方法はありますか?
よければ教えて下さい。

B-Cus 1998/05/01(金) 06:04:02
これはねぇ…、常に「http://www.foo.com/~bar/hogehogebbs.cgi?
のようにURLの最後に?を付けておくと、うまくいくかもしれないです。
それ以外の解決方法は僕は知りません。

HERO [E-Mail] 1998/05/02(土) 04:40:04
B-Cusさん、ご意見ありがとうございます。
実験してみましたが、残念ながら駄目でした。
どなたがご存知の方がいましたら、よろしくお願いします。

B-Cus 1998/05/02(土) 12:58:20
もちっと詳しい情報を教えてください。
できればURLとソースを見せていただけると話が早い(かもしれない)です。

とほほ 1998/05/03(日) 00:27:59
print "Location: 〜\n\n"; exit(0);
で、一度別のURLに飛ばしてやれば、フォームデータがクリアされる
ようです。〜は、http: か / で始まるURLで、しかも、現在のURLと
別のURLを記述しなくてはならない点をご注意。

HERO [E-Mail] 1998/05/03(日) 17:47:56
[[解決]]
みなさん、ありがとうございます。どうも難しみたいですね。
色々調べていたらWEB裏技のQ&Aでその対処方法が記述されていました。自分の掲示板で同様の注意を掲載して対処しようと思います。
ちなみに、下記にQ&Aの回答を書いておきます。
ありがとうございました。

☆リロードしたら2重投稿されてしまった☆
リロード(Reload)とは、「その画面で直前に行った処理を再度実行する」ということです。単にそのページを閲覧しただけであれば、リロードすればその画面をもう一度読み出すだけですが、掲示板などで投稿した直後の画面でリロードするということは、今投稿した処理を再度実行するという意味になり、「送信フォームから送り直しますか?」と聞いてくるのです。画面だけを最新のものにしたければ、URL欄にカーソルを持っていってリターンし、それでキャッシュを読むようであれば、そこでリロードすればいいのです。

HERO [E-Mail] 1998/05/03(日) 18:03:16
[[解決]]
続報です。
上記の対処として、掲示板に「Reload」ボタンを付けました。
で、このボタンを押されると、データの表示だけ行うようにしたので、投稿を行った後でも、「送信フォームから送り直しますか?」とのメッセージが表示されず、あたりまえですけど、画面のみが更新されます。
姑息な手段で、利用する人が画面のトップまで移動して、ボタンを押す手間はかかりますが、とりあえず解決ですかね!?

satoshi [E-Mail] [HomePage] 1998/05/13(水) 15:54:34
WEB裏技のBBSでつい先日教えてもらったのですが、

print "Location: $reload" . '?' . "\n\n";
exit;

というのを受け付け処理の終わったところに入れることで解決し
ました。私はminibbsの8.8を使っているのですが、これはもとも
とminibbsの昔のバージョンにあった工夫です。なんでなくした
のかは不明。

私がリロード対策を講じたのは、metaヘッダーでcontent-type
を返すようにしたところ勝手にリロードがかかることがあるのに
気付いたためです。この辺の話は最近のfj.net.www.browsers
か、私のwebページを見てくださいな。

[上に] [前に] [次に]