-PR-
締切り
済み

ボタン押したときだけカウント

  • 暇なときにでも
  • 質問No.10900
  • 閲覧数160
  • ありがとう数5
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 77% (530/685)

http://www.sic.shibaura-it.ac.jp/~p00050/
でホームページを作っています。
左下のほうにあるリンクをクリックしたときだけ、カウントが上がるようにしたいんです。
でも表示更新したときにもカウントが上がってしまいます。

左下の部分のフレームはcount.cgiで、ソースは次のとおり。

#!/usr/local/bin/perl
$data = 'data.dat';
open(F, "$data");
$count = <F>;
close(F);
$count++;
open(F, ">$data");
print F "$count";
close(F);
print "content-type:text/html\n\n";

print "<body bgcolor=black topmargin=0 leftmargin=0 bottommargin=0 rightmargin=0>\n";
print "<font color=lightgrey size=2><p align=center>ポイント <b>$count</b><br>\n";
print "このページに共感した人は、<br>好きなだけ<a href=count.cgi target=count>ここ</a>を押してください。";
print "</p></font></body>\n";
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全6件)

  • 回答No.2
レベル8

ベストアンサー率 35% (7/20)

Kanataさんのやり方で構わないと思います。 とりあえず「回答しろ」と命令されてしまったので別解。(笑) CGIへアクセスがかかったらカウントアップし、 print"Location:count.html\n\n"; のようにしてあらかじめ作っておいたページへ飛ばす。 表示するページにカウント数を表示させたい場合は・・・ 1.HTMLファイルを書き換えてから飛ばす。 ...続きを読む
Kanataさんのやり方で構わないと思います。
とりあえず「回答しろ」と命令されてしまったので別解。(笑)

CGIへアクセスがかかったらカウントアップし、
print"Location:count.html\n\n";
のようにしてあらかじめ作っておいたページへ飛ばす。
表示するページにカウント数を表示させたい場合は・・・
1.HTMLファイルを書き換えてから飛ばす。
2.表示用CGIを別に作ってそのCGIへ飛ばす。
3.HTMLに引数を渡し、JSを使ってそれを表示させる。
・・・等の方法があります。
3 については私のサイトの「JavaScriptの部屋」を参照していただければと思います。
参考URL:http://w3.to/sephy
補足コメント
haporun

お礼率 77% (530/685)

1の方法を試してみました。
HTMLは書き換わっているのですが、その書き変わったHTMLを表示してくれません。
キャッシュでも読みに行っているのでしょうか。
そのあと表示側が自発的に表示更新すると、カウントが上がったHTMLが表示されます。
投稿日時 - 2000-10-18 09:43:17


  • 回答No.1

なるほど、TOPページを表示したときには、 カウントしないで、リンクをクリックしたときに カウントアップするようにしたいのですね? ということは、HTTP_REFERERを使っては どうでしょう。こんな感じです。 if($ENV{'HTTP_REFERER'} eq 'http://...') {  カウントアップ } 確かこんな感じででき ...続きを読む
なるほど、TOPページを表示したときには、
カウントしないで、リンクをクリックしたときに
カウントアップするようにしたいのですね?

ということは、HTTP_REFERERを使っては
どうでしょう。こんな感じです。
if($ENV{'HTTP_REFERER'} eq 'http://...')
{
 カウントアップ
}

確かこんな感じでできるはず。
ではでは☆
補足コメント
haporun

お礼率 77% (530/685)

http://...

...
の部分には、ソースファイルのURLを書けばいいのでしょうか。
かなり初心者なので、その辺もお願いします。
投稿日時 - 2000-10-18 10:16:25
  • 回答No.3

補足読みました。 「http://...」の部分には、 「http://www.sic.shibaura-it.ac.jp/~p00050/list.html」 と書けばいいでしょう。 しかし、なにやら無駄なループが入っているよう なのですが、可能ならばソースを補足してください。 ではでは☆
補足読みました。
「http://...」の部分には、
http://www.sic.shibaura-it.ac.jp/~p00050/list.html
と書けばいいでしょう。

しかし、なにやら無駄なループが入っているよう
なのですが、可能ならばソースを補足してください。

ではでは☆
  • 回答No.4
レベル8

ベストアンサー率 35% (7/20)

キャッシュを読ませないようにするために Cache-Control: nocache とか Pragma: nocache とかを Location: ~ の前に書いてください。 例 print << 'END'; Cache-Control: nocache Pragma: nocache Location: ~ END
キャッシュを読ませないようにするために
Cache-Control: nocache
とか
Pragma: nocache
とかを
Location: ~
の前に書いてください。


print << 'END';
Cache-Control: nocache
Pragma: nocache
Location: ~

END
  • 回答No.5
レベル8

ベストアンサー率 35% (7/20)

×nocache ↓ ○no-cache らしいです。 HTTPについてはあまり詳しくないので わかりませんが・・・ RFCには no-cache と書いてありました。 ...続きを読む
×nocache

○no-cache

らしいです。
HTTPについてはあまり詳しくないので
わかりませんが・・・
RFCには no-cache と書いてありました。
補足コメント
haporun

お礼率 77% (530/685)

エラーが解消できません。
http://www.sic.shibaura-it.ac.jp/~p00050/count.txt
にソースを置いときます。

あと、表示更新をしたり、ページを初めて開いたばかりのときにカウント部分が表示できなくなってしまうのはなぜでしょう。
投稿日時 - 2000-10-19 12:44:19
  • 回答No.6
レベル8

ベストアンサー率 35% (7/20)

まず print << 'END'; Cache-Control: no-cache\n Pragma: no-cache\n Location: count.html\n\n END の部分ですが、改行は \n を使わないでそのまま改行してください。 例 print << 'END'; Cache-Contro ...続きを読む
まず

print << 'END';
Cache-Control: no-cache\n
Pragma: no-cache\n
Location: count.html\n\n
END

の部分ですが、改行は \n を使わないでそのまま改行してください。


print << 'END';
Cache-Control: no-cache
Pragma: no-cache
Location: count.html

END


それと日本語の扱いには注意が必要です。
2バイト文字の場合、どちらかのバイトが " 等の文字と同じだったりすると、Perlはそれを " と解釈してしまいます。
文字の前後に\を置いたりすると解消されます。

解消法の例
×print"表示";

○print"表\示";


補足
#!/usr/local/bin/perl -w
とすると文法エラーなんかに警告を出してくれるようになります。


蛇足
<meta charset=shift-jis>
が不明です。
meta要素の属性に charset ってありましたっけ?・・・


<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
補足コメント
haporun

お礼率 77% (530/685)

eucで書いているので、2倍と文字が"になることはないのでは。
とりあえずエラーはなくなりましたが、やはり効果はないようで。
しかし、"ここ"をクリックして表示更新すると、このフレームが表示されなくなって、再度このページを表示した後、1度表示更新したら現れる、というこの症状は何でしょう。
とりあえず、count.txt更新しておきました。
投稿日時 - 2000-10-20 13:33:51
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ