|
1.アクセスカウンタはグラフィックじゃなくちゃ!
今までは文字でのアクセスカウンタでした。
ここでは画像表示型にします。
2.グラフィック化第一歩
-ac5.bas-
#!/usr/bin/scriba
'ファイルを開く
open "acdata.txt" for random as 1
'ロック
LOCK #1,write
'変数countに読み込み
line input #1, count
count=count+1
'ファイルの現在位置
SEEK #1,0
'書き込み
print #1,count
'ロック解除
LOCK #1,release
close 1
'表示部分です
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>",COUNT,"回目の表示です<br>アクセスカウンタを画像で表示します<br>"
for i=1 TO LEN(count)
print "<img src=\"http://127.0.0.1/image/",MID(count,i,1),".gif\">"
NEXT
print "</body></html>" |
| ★画像ファイル(0.gif〜9.gif)のZIP圧縮ファイルはコチラ★ |
このプログラムを実行するに当たりhttp://127.0.0.1/image/に0.gif〜9.gifを先にいれておいてください。
0.gif〜9.gifが他の場所にある場合は、<img src=>の部分を変更してください。
表示部分のみを変更しました。
実行すると、先ほどの文字が画像になって表示されると思います。今回はサンプル画像を用意しました。

このように表示されましたか?(上は1回目の表示です)
それではF5キーの上に指を置いて更新してみましょう。Internet ExploreはF5は更新(再読み込み)です。

そしてこれが1007回目の更新(アクセス)時の画像です。
ちゃんと4桁になっていることがわかります。
3.プログラムの解説
それではac5.basの解説です。もう一度、同じプログラムを載せときます。
-ac5.bas-
#!/usr/bin/scriba
'ファイルを開く
open "acdata.txt" for random as 1
'ロック
LOCK #1,write
'変数countに読み込み
line input #1, count
count=count+1
'ファイルの現在位置
SEEK #1,0
'書き込み
print #1,count
'ロック解除
LOCK #1,release
close 1
'表示部分です
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>",COUNT,"回目の表示です<br>アクセスカウンタを画像で表示します<br>"
for i=1 TO LEN(count)
print "<img src=\"http://127.0.0.1/image/",MID(count,i,1),".gif\">"
NEXT
print "</body></html>"
|
ファイル読み込み書き込み部分は前項のプログラムと同じです。ファイルロックもちゃんとしています。
変更したのは表示部分です。
まず、COUNT変数の内容を文字で表示しています。
そして、FORでループを作ります。
for i=1でiに1が代入されました。LEN()関数は文字数を返します。この場合はcountの文字数です。
例えば、COUNTが1007であれば、4文字ですのでLEN()関数は4を返します。
つまり4回ループするということです。
ループ内のprint 命令で画像を表示します。<img>タグは画像を表示するタグです。src=""で画像ファイルの位置を指定します。
http://127.0.0.1/image/の次のMID(count,i,1)で1文字ずつ抜き出しています。
MID()関数は文字列の一部を抜き出す関数です。
MID(文字列,開始位置 [,長さ])
長さの指定は任意です。
今回の開始位置には変数iが指定されています。iは最初1ですが、NEXTに到達するたびに一つ加算されます。
長さを1と指定することにより、i文字目から1文字、つまりi文字目のみを取得することに成功しています。
▼参考リンク
文字列を加工しよう |
|