#!/usr/local/bin/perl
#↑Perlのパスをサーバに合わせて記述してください。


package AppsPage::Jscnt;
my $define = {};



#【プログラム情報】
#------------------------------------------------------------------------------#
# (C) Apps Page.
# http://apps.cside.com/
#
# プログラム名 【 JSカウンタ 】
# バージョン   【 1.5 】
#
#



#【ファイル構成図】
#-----------------------------------------------------------------------------#
#
# public_html/
#   │
#   ├ index.html ……………………………… (755) カウンタ呼出しHTML
#   │
#   └ jscnt/   ………………………………… (755) プログラムディレクトリ
#       ├ cnt.cgi  …………………………… (755) このファイル。
#       └ data.cgi   ………………………… (666) カウント数記録ファイル
#

# ★カウント数を初期化するには？★
# 「data.cgi」をテキストエディタで編集して、サーバへ転送します。
# 1000で初期化する場合、1000と書き直してください。





#【設置環境設定】
#-----------------------------------------------------------------------------#


# ■ファイルロック（flock関数）
# '0' / ロックしない
# '1' / ロックする#標準
$define->{'FILELOCK'} = '1';


# ■カウンタ最短ケタ数
$define->{'CNT_FIG'} = 6;


# ■カウント数記録ファイル（data.cgi）のパス
$define->{'DATA_FILE'} = 'data.cgi';


# ▼flock関数の因数

# ■排他ロック（通常変更不要）
$define->{'LOCK_EX'} = '2';


# ■アンロック（通常変更不要）
$define->{'LOCK_UN'} = '8';




#【呼出しタグ】
#-----------------------------------------------------------------------------#

# ファイル構成図どおりに設置した場合、次のタグを
# index.htmlに貼付けてカウンタを呼出せます。
#
# <script language="JavaScript" src="./jscnt/cnt.cgi"></script>
#


# ファイル構成図とは別の方法で設置した場合、次を参考にどうぞ。
#
# <script language="JavaScript" src="設置アドレス/cnt.cgi"></script>
# 
# カウントしたいページに上記のタグを貼付けてカウンタを呼び出します。
# 設置アドレス部分は、http://〜〜〜/ または、相対パスで指定します。
#
#




#=============================================================================#
#
# これ以下は、変更の必要ありません。
#
#=============================================================================#




#カウント
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);


#主力
if( $ENV{'SCRIPT_NAME'} =~ /nph\-[^\/\\]+$/ || 
	( $ENV{'MOD_PERL'} && $ENV{'PERL_SEND_HEADER'} ne 'On' )
) {
	print "HTTP/1.1 200 OK\n";
}
print "Content-Type: text/plain\n\n";
print "document.write('$total');\n";
exit(0);




0;
