#!/usr/bin/perl #↑Perlのパスをサーバに合わせて記述。 package AppsPage::Imgcnt; my $define = {}; #【プログラム情報】 #------------------------------------------------------------------------------# # (C) Apps Page. # http://apps.cside.com/ # # プログラム名 【 IMGカウンタ 】 # バージョン 【 1.5 】 # # #【ファイル構成図】 #-----------------------------------------------------------------------------# # # public_html/ # │ # ├ index.html ……………………………… (755) カウンタ呼出しHTML # │ # └ imgcnt/ ………………………………… (755) プログラムディレクトリ # ├ cnt.cgi …………………………… (755) このファイル。 # ├ gifcat.pl ………………………… (644) GIF連結ライブラリ。 # ├ data.cgi ………………………… (666) カウント数記録ファイル # └ imgs/ ……………………………… (755) カウンタ画像ディレクトリ # └0〜9.gif ……………………… (644) GIF画像 # # ★GIF画像を変更するには?★ # 「imgs/」内の0〜9.gifを全て置き換えます。 # # ★カウント数を初期化するには?★ # 「data.cgi」をテキストエディタで編集して、サーバへ転送します。 # 1000で初期化する場合、1000と書き直してください。 #【設置環境設定】 #-----------------------------------------------------------------------------# # ■ファイルロック(flock関数) # '0' / ロックしない # '1' / ロックする#標準 $define->{'FILELOCK'} = '1'; # ■カウンタ最短ケタ数 $define->{'CNT_FIG'} = 6; # ■画像ディレクトリのパス(0〜9.gifの入ったディレクトリ) $define->{'IMG_DIR'} = 'imgs/'; # ■カウント数記録ファイル(data.cgi)のパス $define->{'DATA_FILE'} = 'data.cgi'; # ■gifcat.plのパス $define->{'GIFCAT'} = 'gifcat.pl'; # ▼flock関数の因数 # ■排他ロック(通常変更不要) $define->{'LOCK_EX'} = '2'; # ■アンロック(通常変更不要) $define->{'LOCK_UN'} = '8'; #【呼出しタグ】 #-----------------------------------------------------------------------------# # ファイル構成図どおりに設置した場合、次のタグを # index.htmlに貼付けてカウンタを呼出せます。 # # # # ファイル構成図とは別の方法で設置した場合、次を参考にどうぞ。 # # # # カウントしたいページに上記のタグを貼付けてカウンタを呼び出します。 # 設置アドレス部分は、http://〜〜〜/ または、相対パスで指定します。 # # #=============================================================================# # # これ以下は、変更の必要ありません。 # #=============================================================================# require $define->{'GIFCAT'}; #カウント my $total; if( !open(CNT,'<'.$define->{'DATA_FILE'}) ) { exit(0); } if( $define->{'FILELOCK'} && !flock(CNT,$define->{'LOCK_EX'}) ) { exit(0); } chomp( $total = readline *CNT ); $total++; if( !open(CNT,'>'.$define->{'DATA_FILE'}) ) { exit(0); } print CNT $total,"\n"; if( $define->{'FILELOCK'} ) { flock(CNT,$define->{'LOCK_UN'}); } close(CNT); #ケタ $total = sprintf('%0'.$define->{'CNT_FIG'}.'d',$total); my @giffiles; my $i; for ( $i = 0; $i < length($total); $i++ ) { push @giffiles, $define->{'IMG_DIR'}.substr($total,$i,1).'.gif'; } #主力 if( $ENV{'SCRIPT_NAME'} =~ /nph\-[^\/\\]+$/ || ( $ENV{'MOD_PERL'} && $ENV{'PERL_SEND_HEADER'} ne 'On' ) ) { print "HTTP/1.1 200 OK\n"; } print "Content-Type: image/gif\n\n"; binmode( STDOUT); print gifcat::gifcat(@giffiles); exit(0); 0;