CGIスクリプト


ここではこのサイトで使っている CGIスクリプトを公開します。といっても今のところ次の四つだけで、これ以上、作る予定はないのですが。

アクセスログ取得 アクセスカウンタ
それぞれのスクリプトの特徴は次の通りです。
どれも、数十行の小さなスクリプトですが、お役に立てば幸いです。

ここに掲載したスクリプトは全て Public Domain です。ご自分の責任で自由にお使い下さい。動かない、サーバをダウンさせちゃったなど あらゆるトラブルに対して、作者はいっさい責任を持ちませんので、ご承知下さい。このページへの直接のリンク、改造したものの転載も自由です。どこにリンク、転載されているか知りたいので、事後でもかまいませんから、作者にご連絡頂けると嬉しいです。このサイトの著作権の取り扱いについては Copyright を参照してください。



アクセスログ/ダウンロードログを取得、ログが一杯になったら自動メール CGI版

自分のサイトの各ページやデータがどんな具合にアクセスされているか気になりませんか。

アクセスログ/ダウンロードログを取得し、自動的にメールするCGIです。適当なものがないかとインタネットを捜し回ったのですが、見つからないので、自作しました。

自作と言っても、Walter Soldiererさんの mail-log.cgi にCGIだけで動かす変更を施し、ダウンロードログを取得するための若干の変更を加えただけのものです。Soldiererさんから許可を頂きましたので、改造したスクリプトを公開します。

今、取得中のログはここにあります。

使い方

source
  1. sourceボタンを押して、スクリプリトを表示、名前を付けて保存
  2. ファイル名をcgilog.cgiに変更
  3. cgilog.cgiの設定を自分の環境に合わせて変更
  4. ここをクリックして、名前を付けて保存。log.txtという名前の空(バイト数 = 0)のログファイルです
  5. ここの右の透明な部分(new.gif という名前の透過型のGIFファイルです)を右クリックして、名前をつけて保存
  6. ログを取りたいページ、データのHTMLを変更
  7. サーバにログファイル、cgilog.cgi、GIFファイルを転送、ログファイルとcgilog.cgiのパーミッション値をそれぞれ666、755に変更
  8. ログ取得のため変更したHMTLページをサーバに転送
スクリプト及びHTMLの設定方法についてはソースコードのコメントを参照して下さい。Walter Soldiererさんの mail-log.cgi を流用しているので、全て英語です。



アクセスログを取得、日付が変わったら自動メール SSI版

前掲のスクリプトを使ってサイトを立ち上げたのですが、ログを眺めていて、イメージを表示しないを指定していると、ログがとられないということに気がついた(^^;;;。
ダウンロードログだけでページログのないやつがある。あれバグかいなと思ったが、良く考えてみたらイメージを表示しないで、プラウジングしているみたいですね。ロボット君かしら。

という訳で、やっばりページのアクセスログはSSIでやらなきゃダメと分かった。ついでに自動メールするタイミングを日付が変わったら送信する方式にしました。

使い方

source
  1. sourceボタンを押して、スクリプリトを表示、名前を付けて保存
  2. ファイル名をssilog.plに変更
  3. ssilog.plの設定を自分の環境に合わせて変更
  4. ここを右クリックして、名前を付けて保存。
  5. ログを取りたいページに以下のHTML文を追加

    <!--#exec cmd="./ssilog.pl"-->
    ./ssilog.plの部分は設定した環境に合わせて変更して下さい。このままだとHTMLページを置いてあるディレクトリに ssilog.pl を置く必要があります。絶対パス/相対パスどちらで指定してもOKです。
  6. サーバにログファイル、ssilog.plを転送、それぞれのパーミッション値を666、755に変更
  7. ログ取得のため変更したHMTLページをサーバに転送
スクリプトの設定方法については前掲のcgilog.cgiのコメントを参照して下さい。gifファイルの設定は不要となります。

このスクリプトはアクセスログ専用です。exec cmd で呼び出す Perlスクリプトなので、ダウンロードログと兼用するのはあまり意味がないと思ったからです。僕はCGI用のスクリプトをダウンロードログ専用とし、ログファイルは共通にして、メールする機能を削除して、使っています。このページの英語版にこれらのアレンジしたスクリプトを紹介しています。興味のある方はここをクリックして下さい。



CGIだけで動作するアクセスカウンタ

Niftyがホームページサービスを開始したので、日本語版のトップページを置いたのですが、カウンタが使えない。仕方がないので、Do it myself. 20行ちょっとのシンプルなものですが、よろしければお使いください。

ここをクリックすると13桁のカウンタのサンプルを表示できます。

使い方

source 引数 ARGV[1] を使ってカウントアップするタイミングを指定しいる点がポイントです。桁数の変更はHTML側だけで済むし、数字を逆順に並べた時、一桁目でカウントアップすれば、次のSSI方式で述べる問題点をある程度回避することができます。このサイトのトッページは、アラビア文字表示するため、逆順に数字を並べているのですが、そのために思いついた苦肉の策ですけど(^^;;;。



SSI方式のアクセスカウンタ

SSIはサーバによってはサポートされていないこともあります。その場合はあきらめて(^^;、CGIだけで動作するアクセスカウンタをお使い下さい。

さて、前掲のCGI方式のアクセスカウンタには次の問題点があります(まあ実用上はそんなに問題にならないレベルだと思いますが、サンプルで試してみて頂くと実験できます)。 CGI方式でも回避する方法もあるのですが、どうしても スクリプトが大きくなり、複雑になります。
という次第で、地元のプロバイダに置いてあるトップページはSSI方式にすることにしました。
SSI方式にするとスクリプトはCGI方式よりも更にシンプルとなりますが、速さは気分だけです(^^;;;。ここをクリックするとサンプルを表示できます。13桁の表示です。CGI方式のサンプルと比較してみてください。

使い方

source このスクリプトも簡単に逆順に数字を並べるよう改造できます。まあ、あまりニーズはなさそうですが(^^;;;、興味のある方はここをクリックしてください。



Home