記事参照
No.1 2011/12/26 09:59
題:Re: CGI形式によるアクセスカウンター(gif→png)
名:EVE
#!/usr/bin/perl
#**************************************
# 《グラフィックカウンタ CGI型》
# ccounter.cgi?81a
#
# 作者:atom 作成日:01/21/2003
# mailto:mail@atom.hostmycgi5.com
#**************************************
# 入力データの解析
$prm0 = @ARGV[0];
if ($prm0 ne ""){
$keta = substr($prm0, 0, 1);
$ichi = substr($prm0, 1, 1);
$type = substr($prm0, 2, 1);
}
$datdir = "."; #カウンタファイルのあるディレクトリ
$datnam = "$datdir/count.dat"; #カウンタのファイル名
$count = 0; # カウンタ初期値
$imgdir = "."; #画像データのあるディレクトリ
#ここから下は変更する必要なし
if (index($ENV{'SCRIPT_FILENAME'}, "atom") > 0){
# $imgdir = "/images/gcounter"; #画像データのあるディレクトリ
$imgdir = "../../../images/gcounter"; #画像データのあるディレクトリ
# print "$datnam";
}
&count_get;
if ($prm0 eq ""){
&count_up;
}else{
&count_dsp;
}
exit(0);
#---cgi end---
sub count_get{
#カウントアップ処理
#カウンタファイルが存在すれば、カウンタ値を得る
if(open(FILE, "$datnam")){ #カウンタファイルを開く
$count = <FILE>; #カウンタ値の取得
close(FILE); #カウンタファイルを閉じる
}
}
sub count_up{
#カウントアップ後書き込み
open(FILE,">$datnam") || &cerror; #カウンタファイルを開く
$count++; #カウンタ値に1を加算
print FILE $count; #カウンタ値を記録する
close(FILE); #カウンタファイルを閉じる
&dummy_out;
}
sub count_dsp{
# カウンタの表示
if (($keta eq '') or ($keta == 0)){
$scount = $count; #カウンタをそのまま表示
} else {
$scount = sprintf("%$keta.$keta"."d",$count); #指定した桁数に変換
}
# グラフィックカウンタの表示
$ketas = length $scount;
if ($ichi <= $ketas){
$suji = substr($scount, $ichi-1, 1);
&count_out;
}else{
&dummy_out;
}
# print qq(<br>);
}
sub dummy_out{
#ダミー画像の表示
if(open(FILE, "$imgdir/no.gif")){ #カウンタ画像ファイルを開く
$cgrp = <FILE>; #カウンタ画像の取得
close(FILE); #カウンタ画像ファイルを閉じる
}
print "Content-type: image/gif\n\n";
print $cgrp;
}
sub count_out{
#画像データの出力
if(open(FILE, "$imgdir/$type"."$suji.gif")){ #カウンタ画像ファイルを開く
read(FILE, $cgrp, 10000); #カウンタ画像の取得
close(FILE); #カウンタ画像ファイルを閉じる
}
print "Content-type: image/gif\n\n";
print $cgrp;
}
sub cerror{
# エラー表示して終了
# local($file) = @_;
print "<center>Can't open error($datnam)<br>\n";
print "カウンタデータが開けませんでした<br></center>\n";
exit(0);
}
#---file end---
上のgifってなっている場所をpngに書き換えればいいだけじゃないかな?
掲示板に戻る