#!/usr/local/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;