掲示板で、投稿後にリロードすると
さっき投稿した内容が再び書き込まれてしまいます。
これを防ぐには、open OUT で書き込みをして
close OUT をした後に、SOPTデータを消す記述を
書けばいいんだと思います。
その記述を教えて下さい。

A 回答 (2件)

SOPTデータの意味が分かりませんが。



> open OUT
> close OUT
一瞬何かと思いました。ファイルハンドルだったんですね。
普通にファイルを開いて、閉じてとか書いた方がいいですよ。

> 掲示板で、投稿後にリロードすると
> さっき投稿した内容が再び書き込まれてしまいます。
良くありますね。

書き込み処理が終わったら、
print "Location: 掲示板のURL\n\n";
とするのを自分では良く使います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Location: で別ページ飛ばす方法もありますよね。
でも、それをせずに、bbs.cgi で送信して
bbs.cgi に飛ばす方法で、さっきの送信した
POST の情報を消すことはできませんか?
$|=1; とか close; とか書いてみたけど、
それをすると bbs.cgi でHTMLが表示されなくなって
うまくいきませんでした。

お礼日時:2001/11/04 20:07

全然参考にならないかも知れませんが一応書き込みます。


まず、何故リロードすると二重書き込みになるかって事ですがリロード事態が
ブラウザが前回行ったことを再度実行すると言う事ですので書き込みの内容を
覚えているブラウザが再び同じ処理を行い書き込みをしてしまいます。

防ぐ方法としてはCGIでは無くMETAタグで勝手にブラウザに書き込み以外の処理を
させれば良い訳です.....
書き込み完了画面を作成しヘッド内に下記の記述をすればOK!?
<head>
<base target="_self">
<title>JUMP</title>
<meta HTTP-EQUIV="Refresh" CONTENT="0;URL=http://********">
</head>

こうすればブラウザが勝手に次の処理を行いリロードしても二重書き込みが防げるはずです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
METAタグの方法をやってみたけど、できませんでした。
リロードで再び書き込まれました。

お礼日時:2002/01/18 23:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qアンケートで二重投稿を防ぎたい

現在、フリーのCGIを使用し社内でアンケートをとっています。全部で20台程のPCからですが、表題の通り二重投稿を禁止したいのです。または二重投稿したマシン名かIPアドレスを特定することができればそれでも良いです。今までの皆さんの回答をいくつか見させて頂きまして、cookieかIPアドレスで判別することである程度防げると思っております。どちらが良いかのアドバイスを含め、できれば具体的な方法をご教授下さい。アンケートは1日ひとつに限らず、2,3時間おいて行われることもあります。よろしくお願いします。

Aベストアンサー

参考までに
まず固定IPで社内ネットーワークが管理されていれば、IPがベストでしょう。モラルの問題になりますが、クッキーは削除すれば関係なくなります。

確実に二重投稿をふせぐのは、各自ユーザーID&PASSを発行して、そこから投稿させるのがベストです。
その際に、アンケートごとに調節ファイル(LOGみたいなもん)を作成して、そこに投稿したユーザーのリストをCGIで書き込んでいき、アンケート投稿の際にそのファイルを参照して、投稿の権利があるかないかを判断させるのがベストでしょう。しかし、ちょっとめんどくさいかもしれません。

手っ取り早くいくのならCMSのXOOPSを使うと簡単です。簡単なコミュニティーサイトが作れます。ユーザ管理とかも簡単にブラウザ上で出来ます。
そこで、半自動でインストールしてくれるモジュールがありますので、URLを書いておきます。

■XOOPS
http://jp.xoops.org/
■モジュール
http://www.bluemooninc.biz/~xoops/


あと、XOOPSというCMVがあるのでその中で

参考までに
まず固定IPで社内ネットーワークが管理されていれば、IPがベストでしょう。モラルの問題になりますが、クッキーは削除すれば関係なくなります。

確実に二重投稿をふせぐのは、各自ユーザーID&PASSを発行して、そこから投稿させるのがベストです。
その際に、アンケートごとに調節ファイル(LOGみたいなもん)を作成して、そこに投稿したユーザーのリストをCGIで書き込んでいき、アンケート投稿の際にそのファイルを参照して、投稿の権利があるかないかを判断させるのがベストで...続きを読む

Q投稿後、サンキュー画面ではなく投稿が反映された画面を表示するには

掲示板のスクリプトを手直ししているところです。
以下の部分に手を加えたいのですが、うまくいきません。どなたか知恵をおかしください。よろしくお願いします。

(現状)
投稿後にサンキュー画面が現れ、「TOPにもどる」ボタンを押すことで投稿が反映されたTOP画面に戻る。

(手直ししたい内容)
投稿後すぐに、投稿が反映されたTOP画面が表示される。
(エラーがあるときはエラー表示する)

Aベストアンサー

恐らくサンキュー画面は、

Content-Type: text/html

から始まって、HTML を CGI から、TOP にリンクを張った画面みたいなのを出力してるでしょうが、それをやめて、

Location: http://foo.bar/baz/

のように、Content-Type ヘッダフィールドではなくて、Location ヘッダフィールドで、TOP ページの absoluteURI (絶対 URI) をパラメータとして出力してみてください。以降の HTML は一切不要です。

Content-Type ヘッダを出力するときのように、Location ヘッダを出力したら、次の行に空行を一行追加してみてください。

print "Location: http://foo.bar/baz/\n\n";

こんな感じでしょうか。
一応、CGI でも定義されている方法ですが、absoluteURI を指定する方法は、HTTP/1.0 および HTTP/1.1 で定義されている方法です。

Qperl チャット リロード

chatpad(http://chatpad.jp/)というサイトを利用してみて思ったのですが、リロードっていつしているのでしょうか?(ブラウザのステータスバーを見る限りは一定の間隔でしかリロードしていなくて、リロードしていない時でも発言は更新される)
perlの勉強をしていて、チャットを作ろうと思ったのですが、色々なサイトを調べてみても、「相手が発言したのかどうかを調べるためにはリロードするしかない。」みたいに書いてあったのですが、リロードなしでも相手の発言を取得して随時表示させていくことができるのでしょうか?(できるなら、そのようなプログラムを書きたいです)
javascriptとperlだけで実現するチャットの場合、どのようなアルゴリズムが一番スマートですか?詳しく教えてください。お願いします。

Aベストアンサー

そのチャットを試したわけじゃないけど紹介記事には「Ajaxを利用しており」って書いてありますね。
http://gigazine.net/index.php?/news/comments/20090715_chatpad/

単純に内部的に定期リロードしてるのか・・・うまく作れば他者の発言に合わせて非同期でロードもできるのかな。
http://www.google.com/search?q=chat+ajax+perl&lr=lang_ja

Qキャッシュ効かないリロードじゃないとカウンタ増えない

普通にページをリロードボタンを押してもカウンタが増えません。
カウンタの表示は画像ではなく数字をそのまま表示しています。
コントロールボタン押しながらリロードボタンを押すと
カウンタは増加します。(Win2000、IE6)
画像で数字を表示しないと駄目なんでしょうか?

Aベストアンサー

あの……おっしゃってるカウンターって、画像ですよね?

なにか誤解があるんじゃないかと思うんですが、レスキューさんのグラフィカル・アクセスカウンター(参考にあげられてるアドレスで飛ぶとここになりますが)って、画像(ただしくは数字のgif画像)で表示してますから、「画像で表示」というところは問題点じゃないと思うんです。
それとも、画像を連結処理しないで表示するというのが目的なのでしょうか。

むしろ、ロック機能を外すのが問題で……CGIなら出来るんですけど、SSIなんですよねえ。これはちょっとわからないんですが……。

とにかく数字の画像に関しては、素材サイトで配布しているところもあると思うので好きなのをダウンロードするか、やる気があれば自分で作っちゃったりすれば良いと思います。
それを、リロードでもカウントするタイプのカウンターで使えば良いことですね。

とりあえず、リロードでカウントするタイプのカウンターを配布してらっしゃるサイトさんを御紹介します。
『CJ-Club』
http://www.cj-c.com/

あと、もし本当に画像を使わない、つまりテキスト表示でしかもリロードでカウント出来るものを御望みなら、こちらがあります。
『KENT WEB』(TEXT COUNTER)
http://www.kent-web.com/

参考URL:http://www.kent-web.com/

あの……おっしゃってるカウンターって、画像ですよね?

なにか誤解があるんじゃないかと思うんですが、レスキューさんのグラフィカル・アクセスカウンター(参考にあげられてるアドレスで飛ぶとここになりますが)って、画像(ただしくは数字のgif画像)で表示してますから、「画像で表示」というところは問題点じゃないと思うんです。
それとも、画像を連結処理しないで表示するというのが目的なのでしょうか。

むしろ、ロック機能を外すのが問題で……CGIなら出来るんですけど、SSIなんですよねえ。これはち...続きを読む

QリロードができるCGIないですか?

ページにアクセスすると同時にリロードをするようにするCGIはありませんか?

日記を管理人ページから書き込んだ後に、他の人がそれを見るときに、
いちいちリロードをしなければ、新着日記が更新されないので、
そういうCGIをcgiファイルで生成されるHTMLファイルに
組み込みたいと考えています。

なにかよい案に心当たりのある方がいらっしゃいましたら、
ぜひ教えてください。

Aベストアンサー

記述した内容が投稿されなかったので再度、記述します。(最終的に2重に投稿された場合は、申し訳ありません)
CGI自体がどうのようになっているのわかりませんが、以下のタグを追加すれば可能です。(実際、掲示板や日記で最新の情報が表示されます。)

・i-mode/Vodafone Liveの場合
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
・EZweb(WAP2.0用 WINやA11xx,A3xxx,A5xxx)
<meta http-equiv="Cache-Control" content="no-cache" />
・EZweb(WAP1.x用 TU-KAやCxxx,A10xx)
<HDML version="3.0" markable="true" ttl="0">
↑この場合だけ、<HDML>タグ内にttl="0"を追加すれば可能です。
他は、タグを追加です。
以上で、必ずキャッシュからデータを読むことなく必ず、サーバからデータをとりなおします。
万一、上記の方法でうまくいかない場合は、CGIプログラム内で、起動する際、単にxxx.cgiではなく、xxx.cgi?tm=$tm など必ず同じにならない値で起動する方法があります。
起動する絶対時間などを入れて起動すると全く同じアドレスとならないので必ず読み直しを行うようになります。(こちらも実績があります。)
質問の目的と違っていたらすみません。

記述した内容が投稿されなかったので再度、記述します。(最終的に2重に投稿された場合は、申し訳ありません)
CGI自体がどうのようになっているのわかりませんが、以下のタグを追加すれば可能です。(実際、掲示板や日記で最新の情報が表示されます。)

・i-mode/Vodafone Liveの場合
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
・EZweb(WAP2.0用 WINやA11xx,A3xxx,A5xxx)
<meta http-equiv="Cache-Control" content="no-cache" />
・EZweb(WAP1.x用 TU-KAやCxxx,A10xx)
<HDML version="3.0...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報