#!/usr/local/bin/perl #飛ばないカウンター(SSI用) V1.00 #昨日と今日のアクセス付き # # Copyright(c) 1999 Yuumi # http://gochagocha.ribbon.to/ # gochagocha@ribbon.to # # 本プログラムはフリーソフトウェアーです。使用するには以下の使用許諾事項をお守りください # # 使用許諾事項 # 1.商用目的に使用してはいけません # 2.著作権を削除して使用してはいけません # 3.著作権を削除して2次創作物を作成する、又は2次配布を行ってはいけません # # # 設置方法 # 1.上記のPerlの位置と、以下の $imagepath を設定します # 2.設置する場所にアップロードをし、パーミッションを700又は705に変更します # 3.表示するHTMLにSSIのコードを書いて完成! # # # 特徴 # 1.追記書き込みですので、データが飛ぶ心配がありません # 2.初期設定が楽です、lockの為のディレクトリやカウンターのデータをアップロードする必要がありません #イメージファイルがあるディレクトリまでの設置するURLからのパス( 0.gif 〜 9.gifが存在すること) $imagepath = 'http://www.yourdomain.des/imagedir/'; #1番目のカウンタデータファイル サイズ*$stepcountがカウントになる $datafile = "./cdat.dat"; #2番目のカウンタデータファイル $stepcountまでの細かいカウント用、$stepcountを越えるとリセットされる $datafile2 = "./cdat2.dat"; #2番目のファイルでカウントする最大値 $stepcount = 1000; #8桁表示 0 or 1 $view8 = '1'; #サーバが日本時間以外の時は変更 ($sec,$min,$hour,$mday,$mon,$year,$wday,$d,$d) = localtime(time+ 9*60*60); #今までの日々のデータが保存されるファイル $fdatelog = 'datelog.dat'; #print "Content-type: text/html\n\n"; #デバッグ時は先頭の#をはずしてね print ''; if( -e $datafile ){ @cbfstat = stat $datafile; } $cbase = $cbfstat[7] * $stepcount; if( -e $datafile2 ){ @cfstat = stat $datafile2; } $cnumber = ++$cfstat[7] + $cbase; $onebyte = '1'; if( ($cfstat[7] % $stepcount) == 0 ){ if ( !open(DATA,">>$datafile") ) { &error; } print DATA $onebyte; close (DATA); if ( !open(DATA,">$datafile2") ) { &error; } close (DATA); }else{ if ( !open(DB,">>$datafile2") ) { &error; } print DB $onebyte; close(DB); } #昨日と一昨日のデータを読み出す # ydate:昨日 yydate:一昨日 if( open( DB ,"$fdatelog" )){ @datelog = ; close(DB); } ($ydate , $ycount ) = split( /:/ , pop( @datelog ) ); if( $ydate eq $mday ){ $yydate = $mday; while( $yydate eq $mday ){ ($yydate , $yycount ) = split( /:/ , pop( @datelog ) ); } }else{ if( !open( DB ,">>$fdatelog" )){ &error; } print DB "$mday:$cnumber\n"; close(DB); $yycount = $ycount; $ycount = $cnumber; } $todaycount = $cnumber - $ycount; $yesterdaycount = $ycount - $yycount; $keta = ( @counter = split(//,$cnumber)); if( $view8 eq '1' ){ if($keta == 1){ @counter = (0,0,0,0,0,0,0,@counter); } elsif($keta == 2){ @counter = (0,0,0,0,0,0,@counter); } elsif($keta == 3){ @counter = (0,0,0,0,0,@counter); } elsif($keta == 4){ @counter = (0,0,0,0,@counter); } elsif($keta == 5){ @counter = (0,0,0,@counter); } elsif($keta == 6){ @counter = (0,0,@counter); } elsif($keta == 7){ @counter = (0,@counter); } } foreach $count (@counter) { $imgfile = "$imagepath$count.gif"; print "\"$count\""; } #昨日と今日の表示はこちらで調節してください print "
today:$todaycount
yesterday:$yesterdaycount
"; exit; # ============================== sub error { print "ERROR"; exit; } _END_