●ファイル格納状態
超初心者のホームページ作成(http://beginners.atompro.net/htm_free.html)
[ ソース ]
[ 機能説明 ]
img src 文で、6回読み出して、5桁のカウンタを桁別に表示します。
[ ソース ]
[ 機能説明 ]
ソース中のコメントでわかると思うが?
さくらインターネットでは www というディレクトリがホーム(public_html 相当)になっていますので、その下に CountCGI というディレクトリを作りました。
----+- www (publc_html)
|
+- CountCGI -+- CntTest.htm
|
+- Counter.cgi
|
+- CounterD.cgi
|
+- 0〜9.gif
+- no.gif
各ファイルの役割は以下のとおりです。
gif 画像は次のところの下位頁の「フリー素材/アクセスカウンタ」からダウンロードさせていただきました。
●カウンタ 呼び出し html
<HTML lang=ja>
<!------------------------------------------------------------------->
<!- カウンタテスト -->
<!------------------------------------------------------------------->
<HEAD>
<TITLE>中井技術工房/カウンタテスト </TITLE>
</HEAD>
<BODY>
<!-------------------------------------------------------------
5桁出力する、上位から下位へ処理
0 出力はカウントアップ処理をし、ダミー画像(空画像)を出力する
<img を使うとかならずなんらかの画像を出力するため
6桁目の指定はエラーで、このときもダミー画像を出力する
--------------------------------------------------------------->
<img src="CountCGI/Counter.cgi?0">
<img src="CountCGI/Counter.cgi?1">
<img src="CountCGI/Counter.cgi?2">
<img src="CountCGI/Counter.cgi?3">
<img src="CountCGI/Counter.cgi?4">
<img src="CountCGI/Counter.cgi?5">
</BODY>
</HTML>
? のあとの 0〜5 は桁を示す引数で、0 のときはカウンタファイルを読み出してカウントアップし、カウンタファイルを更新し、ダミー画像を表示します。
<img src 文ではなんぞかんぞの画像を頁出力せんと気がすまないようで、ダミー画像(=空画像)を出力するようにしています。
●カウンタ CGI
#!/usr/bin/perl
#==========================================================================
# CGI カウンタテストプログラム Dec.28,2014
#==========================================================================
#print "Content-type:text/html\n\n"; # 必要に応じて本文を非コメント文にすること
# imsg〜で呼び出した引数(0〜9) を取り出す
# 桁Sr を指す、0 は特別でカウントアップのみ
$ketasr = @ARGV[0];
# カウンタファイルからカウンタ数字を取り出す
$cfname = "CounterD.cgi";
open(FP,"<$cfname");
$count = <FP>;
close(FP);
if ($ketasr == 0){ # 0 のときはカウントアップしてダミー画像を出力する
$count++; # カウントアップ
# カウンタファイルにカウント値(カウントアップ済み)を書き込む
open(FP,">$cfname");
print FP "$count";
close(FP);
# ダミーの画像(=ほとんど空の画像)を指定する
$gifname = "no.gif";
}else{
if($ketasr>5){ # 5桁表示なので6以上が指定されるとエラー
$gifname="no.gif"; # なのでダミーの画像(空画像)を指定する
}else{
# 1〜は対応する ?.gif を出力する
$ketayuko = length($count); # 格納数字の有効桁数
# 5桁表示とするが最初は5桁もカウンタがない
$ketadummy=5-$ketayuko; # 上位ダミー桁数=5−有効桁数
if($ketasr <= $ketadummy ){
$gifname ="0.gif"; # 上位桁用に0表示画像を指定する
}else{
# カウンタの指定桁目が有効数字の何桁目かを計算して、1桁分の数字を取り出す
$su = substr($count, $ketasr-$ketadummy-1, 1); # 1-最上位桁 2-2桁目の数字
$gifname = "$su.gif"; # 該当数字の画像を指定する 0〜9.gif
}
}
}
#----------------------------------------------------------------------
# カウンタの該当桁数字相当の gif 画像(0〜9.gif) を読み出して頁出力
#----------------------------------------------------------------------
# 画像ファイルを読み出す
open(FP, $gifname);
read(FP, $gdat, 10000); # バイナリで読み出す、バイト数には大きな数字を入れておく
close(FP);
# 画像ファイルを頁出力
print $gdat;
トップ >
CGIアプローチ トップ >
頁トップ