掲示板でも書き込みの不具合

[上に] [前に] [次に]
ぽくむら [E-Mail] [HomePage] 2000/02/23(水) 19:30:16
今、Perlを勉強中で、それなりにわかってきたので
オリジナルのBBSを作ってみました。

ところが、いったん書き込みを実行し、ページに発言が
書きこまれた後に「更新」ボタンを押すと、フォームデータの
再投稿を要求され、同じ内容が書きこまれる、ということが
起こっています。

どなたか同じような症状になった方で、解決方法を知っている方は
いませんでしょうか?
ちなみに、Windows2000+IE5.0、
AN HTTPD&PerlForWIn32でテストしました。

EMI 2000/02/23(水) 19:52:16
そういうものです。
解決方法としては、
1.掲示板に「最新の情報に更新」ボタンを付ける。
2.データファイルに書き込んだところで、Locationヘッダでその掲示板にとばす。
などがあるようです。
ただ、1はユーザーがブラウザの「更新」ボタンを押す行為に対して、結局のところ無力です。
2は、NNでLocationを受け付けたことを示す画面が表示されて非常にうっとうしいです。

とりあえず、私の場合は1の方法を採ってみました。
2で、うまく途中経過を回避する方法があったら、誰か教えてください。

andi 2000/02/24(木) 00:25:43
自分は書き込み途中で一旦ログを読み込むので
データファイルの1行目と比較して書き込みないようが同じ場合は
書き込み処理をreturnするようにしています。

Ichi 2000/02/25(金) 07:05:38
私はデータファイルの最初の方に直前の書きこみ内容を保存しておいています。
それと書きこみを比較して、同じなら蹴るようにしています。
# andiさんと同じ?

あまり関係ありませんが、ぽくむらさん、画像には出来るだけ
ALT属性で代替テキストを付けましょう。

ふと 2000/02/25(金) 10:15:11
書き込みを受け付けるcgiの出力で BBSの入り口に飛ばせば
いいんじゃないですか?(送信をクリアする)

# <BODY onLoad="BBS.cgi">とか
# <META HTTP-EQUIV="refresh" CONTENT="1";URL="BBS.cgi"> とか

EMI 2000/02/25(金) 11:48:33
refreshを解釈してくれなかったり、期待通りの動作をしないブラウザもありますからね。
どのブラウザでも期待通りに動く方法があったらうれしいんですけど。
ところで、
> # <META HTTP-EQUIV="refresh" CONTENT="1";URL="BBS.cgi"> とか
引用符の位置がめちゃくちゃですけど。

<META HTTP-EQUIV="refresh" CONTENT="1; URL=bbs.cgi">
かな?

ふと 2000/02/25(金) 12:01:57
>refreshを解釈してくれなかったり、期待通りの動作をしないブラウザもありますからね。
>どのブラウザでも期待通りに動く方法があったらうれしいんですけど。
じゃあ
<A HREF="BBS.cgi">一覧へ戻る</A>
かな?

>> # <META HTTP-EQUIV="refresh" CONTENT="1";URL="BBS.cgi"> とか
>引用符の位置がめちゃくちゃですけど。
失礼しました

<いいわけ>本のサンプルソースをそのまま使った物で…</いいわけ>

Syn [E-Mail] 2000/02/25(金) 12:31:55
ちなみに、 i-mode では Location: ヘッダは無効になるようです。

わたしもデータファイルの最新のデータとフォームのデータが同じ
だったら二重投稿だと判断して書き込みを中止してます。
でもこれだと間に別の投稿が挟まると通っちゃうんですけどね。
それはそれであきらめて手で削除してます。

ぽくむら [E-Mail] [HomePage] 2000/02/26(土) 13:06:25
[[解決]]
御返答ありがとうございました。

同じコメントなら書き込まない、というふうに
してうまくいきました。

それにしても、どうしてあのウィンドウが出るの
でしょうかね?

B-Cus 2000/02/26(土) 17:44:50
> それにしても、どうしてあのウィンドウが出るの
> でしょうかね?
ユーザに確認させないと、二度書きする人がたくさんでるから。

要は、POST と GET では使いどころが違うということ。

yb 2000/02/26(土) 19:16:46
>ちなみに、 i-mode では Location: ヘッダは無効になるようです。
iMode持ってないのにiMode用の掲示板作ってたので気付きませんでした。(^^ゞ
助かりました。この情報。m(__)m
ちなみに以前、EZからの書き込みで文字化けする件が有ったのですが
J-SkyWeb用にGETに変更したところ化けなくなりました。
現在は、PCとiModeはPOST、EZ系とJ-SWはGETとCGI中で振り分けています。
別のトピックですが、この場を借りて報告しておきます。

ふじ 2000/02/26(土) 19:43:30
>ちなみに、 i-mode では Location: ヘッダは無効になるようです
どの機種で確認されました?
私が作った CGI では、501シリーズ(D501,F501,N501,P501)
では Location ヘッダを発行したら正常にリダイレクトしましたが。

# Location ヘッダは http:// から始まる絶対パスで指定。

Syn [E-Mail] 2000/02/26(土) 23:30:10
> ちなみに、 i-mode では Location: ヘッダは無効になるようです

は、某 ColdFusion とゆーウェブアプリケーションサーバの ML で
聞いた話だったのですが… その WAS の問題なのかもしれません。
混乱させてすみません。

yb 2000/02/27(日) 00:39:38
あらら(^^ゞ

解決ついてますが・・・
このトピックの事なのですが
TEXTAREAに「VALUE=""」を付けて出力すると言うのは駄目なんでしょうか?
当然、TEXTAREAに書き込み内容が無いときは弾くようにして。

yb 2000/02/27(日) 00:42:21
あっ、ゴメンナサイ。
リロード対策でしたね。(^^ゞ

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