概要

トータル・昨日・今日、のカウントを表示できるPHPのカウンターです。カウンターは、基本的なテキスト表示およびGIF画像表示と、gifcat連結画像出力、GD生成画像出力が可能で、設置するページやサーバの環境にあわせて選べます。IPアドレスと時間によるリロード制限やキリ番機能他もついています。詳しくはすぐ下の「機能」を見てください。

機能

使用上の注意

色々と詰め込んだため、設定と設置方法が少し分かり辛いかも知れません。質問や要望などがありましたらがらくたBBS-PHPでどうぞ。

スクリプトのダウンロード→ vcounter101.lzh

設置方法

ダウンロードしたファイルを解凍して、下の5つのファイルを同じフォルダにアップロードします。vcounter.phpはアップロードする前に下の設定変更(全般)を参考に設定を変更します。アップロードしたフォルダのパーミッションを 705 以上にして、各ファイルのパーミッションを下のように設定します。カウンタータイプ1と2で使うGIF画像を置くフォルダを作成し、その中に 0.gif 〜 9.gif までのGIF画像ファイルとキリ番時に表示する画像ファイルをアップロードします。よくわからなければ、解凍してできたフォルダを丸ごとアップロードしてパーミッションだけ設定してください。

vcounter.php 604 以上。スクリプト本体。
vct.log 606 以上。ログファイル。0バイトの空ファイルです。
vct.bak 606 以上。バックアップファイル。0バイトの空ファイルです。
vct.lock 606 以上。排他制御用ファイル。0バイトの空ファイルです。
gifcat.php 604 以上。カウンタータイプ2で使うGIF画像連結ライブラリ。

ファイルやフォルダの設定を変えずに使用する場合は、以下の様になります。

vcounter/ ←V Counter用フォルダ(フォルダ名はお好きにどうぞ)。705 以上。
  | vcounter.php ←スクリプト本体。604 以上。
  | vct.log ←ログファイル(0バイトの空ファイル)。606 以上。
  | vct.bak ←バックアップファイル(0バイトの空ファイル)。606 以上。
  | vct.lock ←排他制御用ファイル(0バイトの空ファイル)。606 以上。
  | gifcat.php ←カウンタータイプ2で使うGIF画像連結ライブラリ。604 以上。
  └ image/ ←カウンタータイプ1と2で使うGIF画像を置くフォルダ(自分で作成)。705 以上。
     | 0.gif〜9.gif ←カウンタータイプ1と2で使うGIF画像。604 以上。
     └ kiriban.gif ←カウンタータイプ1と2のキリ番時に表示する画像。604 以上。

ここまで完了したら、カウンターを表示させたいページにカウンタータイプに応じたタグやスクリプトを記述してカウンターが表示されるようにします。詳しくはすぐ下の「カウンター表示方法」を見てください。

カウンター表示方法

カウンタータイプ0(テキスト表示)と1(GIF画像表示)の場合

vcounter.php内のカウンタータイプの設定($cttype)を”0”または”1”にします。

カウンターを表示させたい場所に以下のように記述します。表示させるページの拡張子をPHPのスクリプトを実行できるもの(一般的には)php にします。

<?php include("./vcounter/vcounter.php"); echo "Total: {$count[0]} yesterday: {$count[1]} today: {$count[2]} $kiri_mes" ?>

PHPのスクリプト中の、”{$count[0]}”は総計カウントに、”{$count[1]}”は昨日のカウントに、”{$count[2]}”は今日のカウントに、”{$kiri_mes}”はキリ番時のメッセージあるいは画像にそれぞれ置換されて表示されます。

カウンタータイプ2(連結GIF画像表示)の場合

カウンタータイプはvcount.phpを呼び出す際にオプションで指定します。vcounter.php内のカウンタータイプの設定($cttype)は無視されます。

カウンターを表示させたい場所に以下のように記述します。表示させるページの拡張子は php 以外(htmlなど)でも大丈夫です。

<img src="./vcounter/vcounter.php?type=2&disp=0">

vcounter.phpを呼び出す際のオプションでカウンタータイプを指定します。カウンタータイプ2で表示するので”type=2”と記述します。更に表示するカウントを指定します。総計カウントを表示する場合は”disp=0”、昨日のカウントなら”disp=1”、今日のカウントなら”disp=2”と記述します。

カウンタータイプ3(GD生成画像表示)の場合

カウンタータイプはvcount.phpを呼び出す際にオプションで指定します。vcounter.php内のカウンタータイプの設定($cttype)は無視されます。

カウンターを表示させたい場所に以下のように記述します。表示させるページの拡張子は php 以外(htmlなど)でも大丈夫です。

<img src="./vcounter/vcounter.php?type=3">

vcounter.phpを呼び出す際のオプションでカウンタータイプを指定します。カウンタータイプ3で表示するので”type=3”と記述します。画像内の文字はvcounter.php内の $text と $text_k で設定します。

通常時の文字の例:$text = "Total:{$count[0]} yesterday:{$count[1]} today:{$count[2]}"

キリ番時の文字の例:$text_k = "Congratulations!! {$count[0]}th Hit"

PHPのスクリプト中の、”{$count[0]}”は総計カウントに、”{$count[1]}”は昨日のカウントに、”{$count[2]}”は今日のカウントにそれぞれ置換されます。

設定変更(全般)

vcounter.php をテキストエディタ(メモ帳等)で開いて、各設定を使用するカウンタータイプや好みに応じて変更します。

ファイル名・パス設定

$this_dir
呼び出したページからこのスクリプト(vcounter.php)へのパス。最後に”/”必須。
$logfile
カウントデータ保存ファイルのファイル名。
$backfile
カウントデータバックアップファイルのファイル名。空ならバックアップしません。
$lockfile
排他制御用ファイルのファイル名。
$image_dir
カウンタータイプ1と2で使うGIF画像のあるフォルダへのこのスクリプト(vcounter.php)からの相対パス。最後に”/”必須(先頭には付けないでください)。
$kiri_img
カウンタータイプ1と2のキリ番時に表示する画像ファイルのファイル名。

動作設定(基本)

$cttype
カウンタータイプを指定します。 0:テキスト、 1:imgタグ画像。カウンター表示方法も見てください。
$ipcheck
連続IPをカウントアップ 0:しない、 1:する。
$sleeptime
カウントアップしない秒数。0秒だと常にカウントアップします。下の補足の「カウントアップ動作がおかしい場合」もご覧ください。
$total_fig
総計カウントの表示桁数。カウンターの数値がここで設定した桁に足りない場合は、その桁まで”0”で補完して表示します。0:補完せずにそのまま表示します。
$prday_fig
昨日カウントの表示桁数。以下同上。
$today_fig
今日カウントの表示桁数。以下同上。
$dectohex
カウントを16進数で表示 0:しない、1:する。カウンータタイプ0と3のみで有効となります。

動作設定(キリ番)

キリ番機能の詳しい内容については下の「キリ番機能について」をご覧ください。

$kiri_bai
$kiri_bai = array(1000,5000,10000)のように、倍数キリ番の基数となる数値をカンマで区切って記述します。倍数キリ番を設定しない場合は、$kiri_bai = 0と記述します。
$kiri_bai_fig
倍数キリ番の基数に対して何桁までキリ番として有効にするかを設定します。 倍数キリ番の基数を$kiri_bai = array(1000,5000,100000)と設定した場合、ここの設定を$kiri_bai_fig = array(4,5,10)とすると、1000を基数とするキリ番は、9000(4桁)まで、5000を基数とするキリ番は、95000(5桁)まで、10000を基数とするキリ番は、9999990000(10桁)まで、となります。
$kiri_ren
キリ番とする連番の設定をします。0:連番をキリ番としない、1:123456789、2:9876543210、3:1と2両方。
$kiri_ren_fig
連番キリ番の有効桁数を設定します。ここで指定した数値以上の桁数の連番をキリ番とします。
$kiri_zoro
ゾロ目をキリ番と 0:しない、1:する。
$kiri_zoro_fig
ゾロ目キリ番の有効桁数を設定します。ここで指定した数値以上の桁数のゾロ目をキリ番とします。
$kiri_mes
カウンタータイプ1のキリ番時に表示するメッセージを記述します。

設定変更(カウンタータイプ3)

カウンタータイプ3(GDでカウンター画像を生成するタイプ)で表示する画像の設定です。カウンタータイプ3を使用しなければ特に設定する必要はありません。設定はスクリプトの200行目あたりからです。

共通設定

$textrgb
通常時の文字の色をRGBで指定します。$textrgb = array(0, 0, 255)のように、カンマで区切って左から、赤、緑、青、の値を設定します。
$bgrgb
通常時の背景の色をRGBで指定します。以下同上。
$textrgb_k
キリ番時の文字の色をRGBで指定します。以下同上。
$bgrgb_k
キリ番時の背景の色をRGBで指定します。以下同上。
$text
通常時に出力する文字列を記述します。”{$count[0]}”は総計カウント数に、”{$count[1]}”は昨日のカウント数に、”{$count[2]}”は今日のカウント数に置換されます。
$text_k
キリ番時に出力する文字列を記述します。以下同上。
$transparent
画像の背景を透過 0:しない、1:する。
$transparent_k
キリ番時の画像の背景を透過 0:しない、1:する。

フォントを指定しない時の画像の設定

画像のサイズは出力文字に合わせて自動調節されます。

$strfont_size
文字サイズを指定します。1:極小、2:小、3:小太、4:普通、5:普通太。
$w_pad
画像の左右から文字までの間隔をピクセルで指定します。
$h_pad
画像の上下から文字までの間隔をピクセルで指定します。

フォントを指定する時の設定

出力する文字にTrueTypeフォントを使用する場合の設定です。フォントはTrueType(.ttf, .ttc)の他、OpenType(.otf)を使用できます。詳しくは下の「カウンタータイプ3の指定フォントについて」をご覧ください。

$ttftext
フォントを指定して出力 0:しない、1:する。
$ttffont_size
文字サイズをピクセルで指定します。
$l_pad
画像の左端から文字までの間隔をピクセルで指定します。
$b_pad
画像の下端から文字までの間隔をピクセルで指定します。
$ttf_width
画像の横幅をピクセルで指定します。文字のサイズや長さに合わせて調節してください。
$ttf_height
画像の高さをピクセルで指定します。文字のサイズに合わせて調節してください。
$ttf_width_k
キリ番時の画像の横幅をピクセルで指定します。文字のサイズや長さに合わせて調節してください。
$ttf_height_k
キリ番時の画像の高さをピクセルで指定します。文字のサイズに合わせて調節してください。
$ttf_font
使用するフォントを絶対パスでファイル名まで記述します。絶対パスが分からなければサーバ管理者に訊くなどしてください。XREAの場合はユーザーフォントのインストール場所は、/virtual/<USER>/shared_html/ 以下の任意のディレクトリとなります。

キリ番機能について

「指定数値の倍数」、「1234、76543、などの連番」、「1111、7777などのゾロ目」をキリ番として、キリ番表示時にはキリ番用のメッセージや画像を表示させることができます。設定については設定変更(全般)の「動作設定(キリ番)」の項を見てください。キリ番の対象は総計カウントのみです。キリ番機能を使用しない場合は、下の各キリ番チェックをすべて”しない”に設定してください。

倍数キリ番について

1000hit毎や10000hit毎にキリ番としたい時に設定します。基数毎の有効桁数も指定できます。倍数キリ番の基数を $kiri_bai = array(1000,5000,10000)とし、有効桁数を$kiri_bai_fig = array(4,5,10)と設定すると、倍数キリ番は「1000, 2000, 3000... 9000, 10000, 15000, 20000, 25000... 100000, 110000, 120000...」となります。倍数キリ番を設定しない場合は、$kiri_bai = 0と記述します。

連番キリ番について

1234、87654、のように、大から小あるいは小から大に数字が連番で並んでいるものをキリ番としたい時に設定します。大から小の連番は「987654, 87654, 43210, 4321」など、小から大の連番は「123456, 23456, 56789」などです。連番キリ番の有効桁数も指定できます。例えば有効桁数を4とした場合は、123、321、などはキリ番としません。

ゾロ目キリ番について

1111、77777、のように、全ての桁の数字が同じゾロ目をキリ番としたい時に設定します。ゾロ目キリ番の有効桁数も指定できます。例えば有効桁数を3とした場合は、11、99、などはキリ番としません。

キリ番用画像とメッセージについて

カウンタータイプ1と2では、キリ番用の画像を用意してそれをキリ番時に表示させることができます。カウンタータイプ1の場合は、画像の種類はGIF以外でも構いません。カウンタータイプ2の場合はGIF画像のみです。アーカイブにはキリ番用の画像が3つ入っていますので、それを使って頂いて結構です。

カウンタータイプ0は、キリ番時にはテキストのメッセージを表示しますが、

$kiri_mes = "<img src=\"./vcounter/image/kiriban.gif\" alt=\"キリ番ゲット\">"

のように記述すれば、画像を表示できます。

カウンタータイプ3は、GD生成画像なので画像を用意する必要はありません。キリ番用のメッセージだけ設定して下さい。

カウンタータイプ3の指定フォントについて

フォントを指定しない場合は出力する文字列に日本語(全角文字)は使用できません。日本語を使用したい時は表示したい日本語を含むフォントを指定する必要があります。$ttftextを1にすると、imagettftext関数を使用して文字列を指定されたフォントで出力します。

使用できるフォント

TrueTypeフォントとOpenTypeフォントが使用できます。TrueTypeフォントはWindowsやMac OSの標準フォントとして用いられているフォントファイル形式で、拡張子は ttf あるいは ttc です。OpenTypeフォントはAdobe Systems社とMicrosoft社が共同開発したフォントファイル形式の1つで、拡張子は otf です。Mac OS X やWindows 2000、Windows XPなどが標準で対応しています。

この2つの形式のフォントでも、GDのバージョン(正確にはGDがサポートしているFreeType)やフォントの更にこまかい形式によって、正常に表示できたりできなかったりします。ローカルサーバで動作テストする際は注意してください。ちなみに、Windows 2000/XP + GD v2.0以降ならOpenTypeフォントを使用すればたぶん大丈夫です。

フォントのインストール

サーバ管理者の指定した場所あるいは任意の場所にアップロードして、絶対パスで指定します。絶対パスが分からなければサーバ管理者に訊くなどしてください。フォントは自分のパソコンにインストールされているものを使用するのが、もっとも簡単で手っ取り早い方法です。Windowsなら C:/WINDOWS/Fonts/ あるいは C:/WINNT/Fonts/ にフォントファイルがインストールされているので、その中から好みのフォントファイルをコピーして使ってみましょう。フォントを見たりコピーしたりには、フリーソフトのフォントインストーラー SAKURAがおすすめです。

自作のフォントをフリーフォントとして公開している方もいらっしゃいます。そういうフォントを使用させてもらうのもいいでしょう。V Counterのサンプルに使用させて頂いているフォントを紹介しておきます。おすすめのフォントです。

補足

カウント数の指定方法

カウント数を変更したい時は、vcct.log をテキストエディタで開いて変更したいカウントを書き換えます。vcct.log の初期値は”0|0|0|0|0”となっています。”|”で区切って、左から、時間、総計カウント、昨日のカウント、今日のカウント、IPアドレス、です。最初から変更したい時は、変更したい個所を書き換えて上書き保存してからアップロードしてください。

カウントアップ動作がおかしい場合

同じページで何度もvcounter.phpを呼び出すと正常にカウントアップしないことがあります。その時は基本動作設定の $sleeptime を 1 〜 3 秒に設定してみてください。

アーカイブ同梱の画像ファイルについて

アーカイブに同梱されているカウンター用GIF画像とキリ番用GIF画像は私(Teal)が作成した物です。お気に召しましたらご自由にお使いください。

謝辞

PHP SAMPLES & TIPSさんのGIF画像連結ライブラリを使用およびアーカイブに同梱させて頂きました。

カウンターサンプルのフォントにロシア風素材とフォントCossackさんの『えれーな「漢字フォント」』と、chipheadさんの『しねきゃぷしょん』を使用させて頂きました。

更新履歴

2005/01/04 ver.1.01 連続カウントアップ制限時に日付をまたがっているとカウントアップしない不具合を修正。
2004/03/27 ver.1.00 とりあえず完成。

Copyright (c) 2003-2006 Teal All Rights Reserved.