• ベストアンサー

HTMLにCGIカウンターを

初歩的なCGI(Perl)のアクセスカウンターの作り方を学びました。 今まではHTMLでHPを作成していました。そこでトップページにアクセスカウンターを付けたいのですが、当然のことながら今のトップページは「index.html」ファイルです。このファイルにCGIによるアクセスカウンターをつける場合、「index.html」のファイルを一から「index.cgi」ファイルにPerlで書き換えなければならないのでしょうか。今の「index.html」の一部分を書き換えるだけでCGIのアクセスカウンターが設置できないものでしょうか。

  • CGI
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • SHOO-3
  • ベストアンサー率56% (28/50)
回答No.2

SSIが使える場合は print "Content-type: text/html\n\n$cnt"; だけをprintして、 <!--#include virtual="counter.cgi" --> のようにHTMLのカウント値を表示したい場所にタグを打ち込めばいいと思います。いわゆるテキストカウンタの一般的な例ってやつです。 SSIが使えない場合は、画像カウンターにしてしまうのもいいと思います。アクセス方法は、<img>タグで行います。 <img src="counter.cgi" /> ちなみに、画像カウンターのやり方は外部のライブラリ(gifcatなど)を使うのがいいと思います。 http://www.tohoho-web.com/wwwsoft.htm 以下、自分の書いたことのあるスクリプトを記述します。参考にしてください。(画像カウンターの表示ルーチン部分のみ) require "gifcat.pl"; my@num=split(//, $cnt); foreach(@num){$_ = "imgdir/$_.gif"} binmode(STDOUT); print "Content-type: image/gif\n\n"; print &gifcat::gifcat(@num); このソースでは、カウンターと同じ位置のimgdirフォルダ内に、0~9.gifというgifファイルを置き、カウンターと同じ位置にgifcat.plを置いておきます。 また、以下も参考になると思います http://www.site-cooler.com/kwl/cgi/4.htm#source

その他の回答 (2)

  • SHOO-3
  • ベストアンサー率56% (28/50)
回答No.3

ソースなら、こんな感じ open( my$FH, "+<count.dat" ) || die "File open error, stopped"; my$cnt = <$FH>; #カウントアップ $cnt++; seek($FH, 0, 0); print $FH $cnt; close($FH); # gifcat呼び出し require "gifcat.pl"; # 数字を画像ファイル名に my@num=split(//, $cnt); foreach(@num){$_ = "imgdir/$_.gif"} # 出力する binmode(STDOUT); print "Content-type: image/gif\n\n"; print &gifcat::gifcat(@num); exit 0; 以上が画像カウンター。 注意点としては、 count.datが無ければならない。中に初期値として0が入っているとBest。 imgdirというフォルダの中に0~9.gifの、10個のgifファイルが無ければならない。 gifcat.plが無ければならない。 open( my$FH, "+<count.dat" ) || die "File open error, stopped"; my$cnt = <$FH>; #カウントアップ $cnt++; seek($FH, 0, 0); print $FH $cnt; close($FH); print "Content-type: text/html\n\n$cnt"; exit 0; 以上がテキストカウンター。また、HTMLに <!--#include virtual="counter.cgi" --> と書かなければならない。あと、ホームページをアップロードする先のサーバーで、SSIが有効になっていなければならない。 ソースをかなり書き換えてしまっているけれど、機能は同じです。

panda-2005
質問者

お礼

ありがとうございます。 SSIは利用可能なようなのです。 SSIに関しては全くの無知なので勉強してみようと思います。 ソース活用さしてもらいます。

  • satosi1
  • ベストアンサー率30% (11/36)
回答No.1

一部分だけでよいですが、CGIを設置したことがあるだけで、作った事はないため自信がありません。とりあえず、ソースを教えてください。

panda-2005
質問者

補足

#!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<body>\n"; print "<head><title>○○○</title></head>\n"; print "<body>\n"; print "<h1>○○○</h1><hr>\n"; #カウンタ読み込み if( open( FH, "count.dat" ) ){ $cnt = <FH>; close(FH); #カウントアップ $cnt++; #カウンタ表示 print "<center>あなたは${cnt}人目の訪問者です。</center>\n"; #カウンタ書き込み if( open( FH, ">count.dat" ) ){ print FH $cnt; close(FH); } else{ print "ファイル書き込オープンに失敗しました。\n"; } } else{ print "ファイル読み込オープンに失敗しました。\n"; } print "</body>\n"; print "</html>\n"; __END__ 以上が私の簡単なCGIのカウンターになります。

関連するQ&A

  • アクセスカウンタの設置場所

    私は、今回始めてHTMLを利用し、HPを作成しました。 だいたいどれくらいの人がアクセスしてくれているのか知りたいので、 カウンタを設置したいと思います。 カウンタ設置場所ですが、index.html(TOPページ)に設置した場合、TOPページにアクセスした人しかカウントされないのでしょうか。 私としては、TOPページには、アクセスしていなくても、TOPページからリンクできるa.htmlやb.htmlやc.htmlも一緒にカウントしてほしいのですが・・。 この場合、TOPページとその他のページ一つ一つにカウンタを設置しなければならないのでしょうか? 教えてください。

  • カウンターcgiをHTMLに表示したい

    perlの入門書を見て簡単なカウンターのcgiを作りました。gif画像を10枚使ってテキスト数字のかわりに表示させるものです。 サーバーにアップして動作確認もしました。ちゃんと動いています。 このカウンターをHP上のHTMLのページに表示させたいのですが方法が分かりません。 <img src="カウンターcgiのURL"> と書いたのですが、ダメでした。 画像ではないのでimgタグだとダメなのでしょうか。 どうすればHTMLに表示できるのか教えて下さい。 関係があるか分かりませんが、SSIは使えます。

    • ベストアンサー
    • Perl
  • CGIをHTML(scriptタグ)上でうまく呼び出せない

    お世話になっております。 ご存知の方いらっしゃいましたら、ご教授願えますでしょうか? HPにアクセスカウンタを設置したいと思い、 http://apps.cside.com/cgi/counter/jscnt/ こちらのアクセスカウンタをお借りして CGIのテストを兼ねてtest.htmで呼び出したいので、 test.htmに以下のような記述をしました。 ------------------------------------------------------------------------ <html> <head> <title>top</title> <script language="JavaScript" src="./jscnt/cnt.cgi"></script> </head> <body> </body> </html> ------------------------------------------------------------------------ また、こちらのCGIの説明ページに書いてある通り、 以下のように設置しました。  html/(レンタルサーバのメインディレクトリ)  │  ├ test.html ……………………… (755) カウンタ呼出しHTML  │  └ jscnt/  ………………………… (755) プログラムディレクトリ    ├ cnt.cgi …………………… (755) カウンタcgiファイル    └ data.cgi ………………… (666) カウント数記録ファイル 以上のように設定したのですが、真っ白のページが表示されるだけで、 カウンターが出ません・・・。 他に設定や何かタグ等を追加する必要があるのでしょうか? お手数ですが宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • カウンタCGIについて

    今、カウンタを自作しています。 カウンタの種類はテキストカウンタです。 ですがカウンタを設置しているページからその他のページへ移動し、ブラウザの「戻る」ボタンで戻ってきたときにカウントがされないんです。 カウンタをテキストで表示したい、SSIを使いたくないと言う理由でHTMLページではJavaScriptを用いてCGIの内容を取得するようにしています。 どうしたら解決できるでしょうか?よろしくお願いします。 <index.htm> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>カウンタ</title> </head> <body> <p> <SCRIPT language="JavaScript" src="count.cgi"></SCRIPT> <noscript>JavaScriptをONにしないとカウンタは動きません。</noscript> </p> <p> <a href="http://www.yahoo.co.jp/">Yahoo!Japan</a> </p> </body> </html>

    • ベストアンサー
    • CGI
  • CGIでカウンターの設置をしたのですが反映されません

    CGIでカウンターの設置をしたのですが反映されません. 数字も自分のページに送ったのですが×印が付いているだけです どうしてかわかりません あなたは × 人目の訪問者です とINDEX.HTMLに表れます。

    • ベストアンサー
    • CGI
  • [URL] "*/index.cgi" を "*/" のように出来るか?

    自分のHPのトップページをCGIで作ろうと思ってます。 それで、お尋ねしたいのですが、URLで、"index.cgi"というファイル名は、 "index.html"等と同じように、省略が可能なのですか? また、省略が可能な場合、index.cgiとindex.htmlが混在していれば、 省略したURLでアクセスすると、CGIとHTML、どちらが表示されるのですか? もちろん、CGIでトップページを作るとサーバーに負担がかかるのは了解しています。

    • ベストアンサー
    • HTML
  • CGIでカウンタ作ったのですが・・・

    初歩的な質問で申し訳ないです。CGIでカウンタを作ったのですが(count.cgi)、表示のさせ方がわかりません。http://xxx/xxx/count.cgiとURLを直接打てば、カウンタは表示されるのですが、トップページに表示させたいです。宜しくお願いします。

    • 締切済み
    • CGI
  • HTMLにCGIを

     こんにちは、非常にお世話になってます。また質問ですが宜しくお願いいたします。  HTMLファイルにCGI(perl5使用)を埋め込みたい (言い換えると index.cgi というファイルではなく index.html というファイル名でCGIを使いたいのです。) のですが何か方法が無いでしょうか?本やWebを探しましたが、情けないことにこれという方法を見つけることができませんでした。よろしければご指導宜しくお願い致します。

    • ベストアンサー
    • CGI
  • cgiのカウンターについて教えてください!

    cgiのカウンターを読み込んでいるページ(index)があるのですが、この度デザインの変更のためindexを新しく作り、書き換えることになりました。 そこで質問なのですが、前からあるindexに新しく書き換える予定のindexを上書きしてしまうと、カウンター数はリセットされてしまうのでしょうか? 怖くてなかなか上書きすることができません。どなたかこの初歩的な質問に答えていただける方いないでしょうか。よろしくおねがいします。

    • ベストアンサー
    • CGI
  • CGIカウンタの設置場所

     CGIを使ったホームページデビューをしたいと思っているのですが、一つ設計面での重要な問題に突き当たってここに問題を投げかけてみることにしました。  (CGIの際に使う言語はPerlでして、中級者レベルにはなっているという前提でお話しします)  まず、アクセスログを残すためにどのCGIの教科書にも載っているアクセスカウンタを設置したいと思っていて、プログラムを書いています。  プログラム自体を作るのは問題ないのですが、ここで一つの大きな壁にぶつかりました。  それは、プロバイダはCGIの使用は許可しているのですが、SSIは許可していないという問題です。  多くの場合、訪問者が最初にアクセスするのはメインページだと思うのですが、これをプロバイダはindex.htmlにするようにしています。しかし、htmlだと静的ページなのでCGIを使うことができません。カウンタは訪問者がメインページに訪問した回数で数えたいのですが、SSIが禁じられているためにこれもできません。  確かに強引に/cgi-bin/main.cgiとして、訪問者にはここにアクセスしてもらうようにしてもいいのですが、URLの見た目として(つまり、美感の問題)として美しくない気がします。  まとめると、SSIの使えない環境にて、index.htmlをメインページとした場合、アクセスカウンタをどのように設置するのが適切か?というのが現在の私の問題です。  (もしくは、解決案はありえないというアドバイスも一つの有益なアドバイスです)  カウンタの作り方はどのCGIの教科書にも書いてありますが、設置のためのホームページ全体の設計方法については書いていません。  ですので、経験豊富な方々のいそうなこの場所にて聞いてみることにしました。  自宅サーバーを使えば、こうした制限はないとは思いますが、セキュリティ上の問題が心配でそれをやる勇気がまだありません。サーバー用のマシンを買ってもいいのかもしれませんが、そのための費用もまだ不足しています。  ですので、プロバイダ上での公開という前提でアドバイスをいただければと思います。  何か名案があれば教えてください。  よろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう