- 日時: 2011/12/26 09:59
- 名前: 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に書き換えればいいだけじゃないかな?
|