新しく質問する

perl CGIが開くと勝手に処理してしまうのを防ぎたい

役に立った:0件
  • 質問者:shevy
  • 投稿日時:2003/05/08 17:23
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

BBSを作成中で、そのBBSに記事ナンバーをつけようと奮闘中です。そこで質問があります。Flashを使って作製していますが、CGIの質問は非常に稚拙だと思いますので、お助けください。


記事のナンバーカウントの値がアップする仕組みをCGIファイルに
組み込んだのですが、書き込みボタンが押されていないのに、
最初にページを開いた瞬間に、カウントがアップしてしまう状態になってしまっています。それ以後は、ページを閉じない限りは、書き込みボタンが押されるたびにカウントの値は1ずつきちんと増えていきます。
要するに、ページを開いたときにカウントが1増えるのを防ぎたいのです。

ちょっとうまく伝えにくいのですが、
以下のような仕組みになります。
count.datファイルの中の数値が一つずつあがっていくようになっています。

#----- ファイルを読み込む
$countfile = "./count.dat";

#-----カウントの値の読み込み
open(COM,"$countfile");
$cnt=<COM>;
close(COM);


#-----カウントの値に1プラスする
$cnt++;
open(COM,">$countfile");
print COM $cnt;
close(COM);

と、以上のような単純な仕組みなのですが、
最後の「カウントの値に1プラスする」という処理が勝手に実行されてしまいます。

CGIファイルの一番下にカウントの値を1プラスする処理を実行するスクリプトを置いたのですが、
最初に実行されてしまうようです。

宜しくお願い致します。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.3ベストアンサー10pt

  • 回答者:karogon
  • 回答日時:2003/05/08 19:18

CGIが記事を表示する(FLASHに渡す)処理、書き込み処理を
行っているのであれば、これらをサブルーチンにて分けるなどをしていると思います。
で、あれば書き込み処理を行うサブルーチン内で
カウント処理をすればいいのではないでしょうか?

通報する

この回答へのお礼

ありがとうございます。
サブルーチンに分けるという処理も、
使えますね。

色々試して行きたいと思います。

ありがとうございました。

  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:kosa
  • 回答日時:2003/05/08 19:11

初めにFLASH側でCGIに記事の取得をしているんですねぇ~
その際にカウントアップされるってことですね。

う~っと
簡単な方法としては2つのCGIを用意する方法です。
1つ目は記事取得のCGI専用
2つ目は記事書き込み専用
どうでしょうか?

※別に2つにしなくても隠しフィールドを利用したり、変数によってCGI側でIF文などで判別する方法もあります。
あんまし参考にならなかったかなぁ?すまそん

>これは、かなり非効率なことをしています・・?
いや いいと思いますよ。結果オーライですもんねぇ♪

通報する

この回答への補足

kosaさん、ありがとうございます。

2つのcgiでうまく実現できました。

やはりこれが一番簡単なようでした。

ありがとうございました。

この回答へのお礼

ありがとうございます。

なるほどぉ・・・。。。
二つCGIがあれば、問題は解決しちゃいますよね。
要するに書き込み専用のほうに、
例のカウント値を増加させるコードを書いておけばいいんですね。
早速作ってみようと思います。

ですが、一番気になるのは、
kosaさんがほのめかした隠しフィールドと、
IF文です。IF文は私も考えてみたのですが、
どのように条件分岐させればいいのか、今回のケースでは思いつきませんでした。

ちょろっと教えていただけないでしょうか。
隠しフィールドについては全くわからないので、
そちらもちょろっとお願い致します。

  • 参考になった:0件
  • 回答者:kosa
  • 回答日時:2003/05/08 18:04

えっとFlash掲示板ってことですよね?

>初にページを開いた瞬間に、カウントがアップしてしまう

FLASH側で書き込みを押した時にのみCGIを呼び出すようにしていますか?
余計なところでCGIを呼び出しているとか・・・

このCGIではカウントするファイルを掲示板ログとが別々のようですが一緒にした方がのちのち便利ではないでしょうか?(削除記事指定とか)

通報する

この回答へのお礼

ありがとうございます。
そうなんです。Flash掲示板です。

Flash側では、まず、LoadAndVarsによって、掲示板の記事を取得するために、CGIにアクセスして、
そこから記事を表示されるという方法をとっておりますので、
どうしても最初はCGIを呼び出さないと駄目な仕組みになっています。

カウントするファイルを別々にしていますが、
書き込み時に、カウントした番号を掲示板ログの先頭に書き込むようにしています。
って、これは、かなり非効率なことをしています・・?

通常、カウントはどのようにして実行していくものなのでしょう。
最初にCGIが実行される仕組みになっていると、
通し番号を実現するのは難しいのでしょうか。

お助けください。

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter