こんばんは、時田です %そう言えば昔ぁしperlで掲示版作った事ありました(^^; FORMとメールで投稿できる奴 Thu, Sep 06, 2001 at 07:43:49PM +0900 において みかみまさと さん曰く: > | print "Content-Type: text/html\n\n" の部分を以下のように > | するというのでどうでしょうか? > | print "Content-type: text/html\n" > | if @cgi['state'][0] == "written" > | print "Refresh: 0; URL=index.cgi?state=read\n" > | end > | print "\n" > > 残念ながら、今までと同じような動作でした。そこで、次のように Content-type に Refreshってのはやった事ないで 結果が変わった/変わらないというのはわからないですが > sleep(10) を加えて、動作を確認しました。 これは ただ(書き込み時の)CGIのレスポンスが遅くなるだけなんで 10秒止まってってのは当然でしょうね > したがって、 1度書き込んでしまうと、state=written に保持されて > しまっています。これを解消する作戦が URL=index.cgi?state=read > だと思うのですが、なんとか、これを参考に頑張ります。 わたしも正確にはわかんないですが(^^; 書き込み後、<FORM>の actionで指定したURLのままでリロードした場合 submitした時のPOSTデータで再書き込みが行われると思うです 各種ブラウザ毎の動作の違いまではわからないです(^^; ?state=read 付きのURL でも動作が変わらないってのは #「&」じゃなくていいんでしたっけ? ブラウザによって評価が違ったりしない? ?以降のパラメタ以前のURLが同じなので、同じデータがPOSTされるのかもです FORM内の POSTデータに state=written があって URL内にも state=read があった場合の cgi.rb 内での評価の順番の問題かも(笑) だから、すでに何人かの方が言ってますけど (Content-typeで指定するのはわかんなかったですが) <head>内の<META>指定でリロード用の(action指定のURLとは別の)URLを指定するとか Location:を使うとか あるいは、JavaScriptを埋め込んで location.replace を使うとかってのは どうでしょう。 ちなみに、state=read は、CGI側に処理があるわけではないようなので 書き込み時のURLと別URLにするって以外の意味はないと思われます ま、いずれにしても rubyの問題じゃなくって 掲示版の作り方のお話しです(^^; -- 時田幸粋 <ktokita / where-i.net> http://ibis.where-i.net/