• ベストアンサー

CGI自体がよくわかりません

CGIの入門書など読んでいますが、HTLMとの関係がわかりません。例えばアクセスカウンターCGIの場合、CGIは結果的にHTLMを生成するものなのですか、それともカウント数だけを返す関数なのでしょうか。多くのCGIの場合、どうも前者的な使用方法になっているような気がします。後者の方が効率的に感じます。実際はどうなのでしょうか。

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

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

  • ベストアンサー
  • moritan2
  • ベストアンサー率25% (168/670)
回答No.3

CGIは関数などではなく、ブラウザからのリクエストを受けて、リクエストに対応する何かを出力するプログラムです。WEBサーバーが受けるリクエストはHTML以外に、GIF、JPEGなどの画像とかCSVとかその他のあらゆるファイルがあります。CGIは書き方しだいでどれでも返せます。CGIでHTMLを出力するように書けばHTMLだし、アクセスカウンタなどではGIFを返すでしょう。特定の認証を受けた人間だけがCGI引数のファイルをダウンロードできるようなCGIなら、認証を通った人には引数のファイルを読み込んでそのまま返すでしょうし、通っていない人には「あなたはこのファイルをダウンロードする権限がない」ということを知らせるHTMLが出力されるでしょう。 ですから、CGIとHTMLの関係ということですが、HTMLはCGIが返すタイプの一つであるといえます。

___xxx
質問者

お礼

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

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

使用により実装は異なります。 単に画像式のカウンタを使用する場合、数値で返されてもHTMLでは数字を表示するしかないわけなので、画像を返す処理をします。 テキストでいい場合は単に数字が返ります。 作り方にもよりますが、HTMLとはあまり関係はありません。 CGI内部でHTMLを書き出している場合がありますが、それはCGIとはまた別の作業です。 CGIが何を生成するのかはCGI次第ですので、HTML'も'生成できますよ、と言うことです。

___xxx
質問者

お礼

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

  • J_ANBI
  • ベストアンサー率48% (24/49)
回答No.1

私見を交えて書かせていただいておりますので、誤りがあるようでしたら、ご容赦ください。 Webブラウザは、主にHTMLを解析して表示するためのソフトウェアです。サーバ側で、HTMLを生成してブラウザに渡せば、ブラウザ側では、HTMLをそのまま表示するだけなので、特段の加工は要りません。 ところで、数値のみを返す関数としてアクセスカウンタを実装した場合には、Webサーバ側の「アクセス数を取得する」処理に加えて、ブラウザ側に「アクセス数を表示する」仕掛けが必要になります。HTMLとアクセス数が別立てであれば、「それらをどう組み合わせのか」という定義が必要になるためです。 よって、全体的な実装効率を考えると、現状では、サーバ側だけで実装ができる前者のほうが多いのではないかと思います。 #ちなみに、HTLMではなく、HTMLですね。(念のため)

___xxx
質問者

お礼

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

関連するQ&A

  • cgiのアクセスカウンターで出来ることは?

    現在、自分自身のHPを公開しており、そのHPではアクセスカウンタ用cgiを使用しております。 ここで、 http://xxxxx.xxx/index.html へとアクセスした場合にだけカウントアップされるカウンターを http://xxxxx.xxx/yyy/zzz.jpg (←HP内のデータ) をダイレクトにアクセスされた場合にもカウントアップさせたいと思っております。 index.html内にcgiの記述をしておけば、index.htmlへのアクセスがあった場合にカウントアップされるのは理解しておりますが、別フォルダのzzz.jpgに直リンが張られていて、ダイレクトにzzz.jpgにアクセスされた場合にもカウントアップされる設定方法が分からないでおります。 →何か良い方法がありますでしょうか?

  • lacoocanにcgiを設置

    lacoocanにアクセス数を表示するcgiを設置しようと思っています。 (1)訪問者数を記録しておくdatファイル (2)訪問者数を読み出し更新するcgiファイル (3)結果をブラウザーに表示するhtmlファイル の3つのファイルを「メモ帳」で作成して、cntというディレクトリに入れます。 lacoocan では、"homepage"というディレクトリにあらゆるファイル、ディレクトリをアップロードすることになっているので、そこに上記のcntディレクトリをアップロードします。 問題は、ここで上記(2)のcgiファイルの中の datファイルの場所を どう記述するかです。 $file = "/homapage/cnt/counter.dat" としているのですが、うまくいきません。 ブラウザーで読み込んでも、カウント数のところはブランクです。 htmlのソースを見ると、 ”訪問者数は、<!--#exec cmd="./counter.cgi" -->です。”となっていて、cgiが正常に動いているのかも定かではありません。 何かアドバイスがありましたら、よろしくお願いいたします。

    • 締切済み
    • CGI
  • カウンタCGIを別のサーバーにおいて動かすことは・・・

    今日からVectorの作者ホームページサービスにホームページを移動したのですが、ここはCGIは使えないので、いままでのところで使ってたカウンタが使えなくなってしまいました。 そこで、今まで使っていた、CGIが使えるサーバーにカウンタのスクリプトを置いてVectorのアクセスをカウントすることは出来るのでしょうか? もしできるなら、方法をお教えください。宜しくお願いします。

    • ベストアンサー
    • CGI
  • CGIファイルへのブラウザからの直接入力によるアクセスについて

    自作のカウンターをSSIで設置するという前提では 『設置先のWebページ以外ではカウンターを作動 させない』または『設置先のWebページを経由して いないアクセスにはエラーを返す』という方法は 無いでしょうか? 通常、出回っているカウンターはブラウザから カウンターのURLを入力して直接カウンターCGIの ファイルにアクセスしてもカウントされてしまい ますが、このようなアクセスをカウントしない カウンターを作りたいのです。 (実際にカウンターCGIファイルに直接アクセスして  更新ボタンを押しまくるような人はまずいないと  思いますが、自己満足のためにやってみようと  思ったらできなかったため、気になって仕方が  無いのです・・・。) IFRAMEタグで設置するという前提では何とかなったの ですが、SSIで設置する場合はブラウザからの直接 入力によるアクセスと設置先へのアクセスを見分ける 方法が思い付かず、どうにも上手くいきません。 SSIでも設置先のWebページでしか作動しない カウンターCGIの組み方について、何か名案の ある方がおりましたら、何卒ご指導いただけますよう よろしくお願いします。

    • ベストアンサー
    • CGI
  • こんな機能があるキリ番カウンターCGIを探しています。

    CGI設置可の環境でHPを作成公開しています。 キリ番カウンターで,次のような機能をもつCGIプログラム(無料レンタルでも可)を探しています。 (1)管理人のアクセスをカウントしない。 (2)一定時間同一IPのアクセスをカウントしない。 (3)キリ番ゲット時にキリ番画面がでて,獲得者がBBSを書き込めるようにできる。 (2)(3)はかなり数としてはあるのですが,(1)の機能がついたものがどうしてもみつかりません。 (1)~(3)の機能がすべてついたものをもしご存知でしたら,どうかよろしくご教授ください。 大変失礼ですが,(2)(3)のみの機能つきのカウンターについてはお教え頂かなくても結構です。

    • 締切済み
    • CGI
  • index.cgiで転送してカウントしたいのですが...

    タイトルの通り、index.cgiでURL転送をし、その数をカウントしたいのですが、そんなCGIありませんでしょうか? キャリアやブラウザで振り分けることはしておらず、単純に別URLに飛ばしているのですが、その飛ばした数、つまりindex.cgiへのアクセス数をカウントしたいのです。 飛ばした先のHTMLは別ルートからのアクセスもあるので、そのHTMLのカウントではなく、転送した分だけを知るためにindex.cgiのカウントをとりたいのです。 PHPならばフリーのスクリプトを発見したのですが、当方のサーバーの仕様の都合で利用不可なのです。 よろしくお願いします。

    • 締切済み
    • CGI
  • 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について教えてください。

    カウンタのcgiについて教えてください。 open(File,"+<count.dat")or die("エラー"); eval{flock(File,2);}; $count=<File>; seek(File,0,0); print File++$count; close(File); print<<END; Content-type:text/html <html> <head> <title>タイトル</title></head> <body>$count人目の訪問者です </body> </html> みたいな感じでカウンタのcgiを作りました。 (Perl・Apache) (携帯からなので、見にくい感じはご容赦ください) これを別htmlファイルにiframeで組み込みました。 今は、単純にファイルが開かれたら+1なので、F5などで更新してもカウントされます。 これを同一IPもしくはコンピュータ名からの連続更新はカウントしないようにするのはどのように書き加えればいいのでしょうか? また、総カウント数だけでなく、昨日のカウント数、今日のカウント数、今月、先月などで集計するためにはどのようにすればよいのでしょうか? わかりにくいかと思いますが、お願いいたします。 m(__)m

    • ベストアンサー
    • CGI
  • HTMLにCGIカウンターを

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

    • ベストアンサー
    • CGI
  • CGIわかる人、教えて下さい

    CGIのことでお聞きしたいんですが、 フリーのCGIスクリプトをカスタマイズし、 HPに載せようとしたんですが、 エラーがでます。 カウンターなのですが、そこには (NO log file)と表示されます。 アクセス権もしっかり設定したのだが、 何がおかしいんでしょう? おそらく、予想では以下の設定がわからないからと思っています。 $log_d= ".";  # ログ生成ディレクトリ(絶対・相対パスで 最後の / は省く) これは、どうゆうふうに書いたらいいのでしょう。

    • ベストアンサー
    • CGI

専門家に質問してみよう