こんばんは、時田です
%そう言えば昔ぁし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/