PHPでアクセスカウンタ!
Updated:
今日は ホームページ のアクセスカウンタをPHPで自作してみました。
今までもアクセスカウンタはつけていましたが、プロバイダの提供するCGIを使っていました。
やはり自宅サーバで運用するからには自分で作らないとと思って、アレコレと調べながら自作しました。 いろんな方法があると思います。 自分でいい方法を試してください。
今回はテキストファイルに書き込む形のもので数字は画像ファイルを使用するものを作りました。 (簡単なやつです)
導入記録
1.画像ファイルの準備
数字に使用する画像を0から9までの10個、自分の好きなデザインのものをWEB上から探してダウンロードする。 ダウンロードした画像のファイル名は 0 用は「 0.gif 」というようにわかりやすいものにし、Webサーバにアップロードする。 ※当方の場合、ドキュメントルートの「 images/counter/ 」に配置しました。
2.カウンタ保存用のテキストファイル作成
適当なファイル名、内容は適当な数字でテキストファイルを作成しWebサーバにアップロードする。 さらにサーバがLinuxの場合、このテキストファイルに書き込みができるような権限「 666 」を与える。 ※当方の場合、「 counter.txt 」というファイル名にし、ドキュメントルートの「 dat 」フォルダに配置しました。 ※内容の最後は改行せずに保存すること。改行するとカウンタが更新されませんので。
3.ソース作成
以下のようなPHPソースをカウンタを設置したい箇所に記述する。
<?php
$counter_file = 'dat/counter.txt';
$counter_lenght = 6; < - - - 桁数の設定
$fp = fopen($counter_file, 'r+');
if ($fp){
if (flock($fp, LOCK_EX)){
$counter = fgets($fp, $counter_lenght);
$counter++;
rewind($fp);
if (fwrite($fp, $counter) === FALSE){
print('ファイル書き込みに失敗しました');
}
flock($fp, LOCK_UN);
}
}
fclose($fp);
$format = '%0'.$counter_lenght.'d';
$new_counter = sprintf($format, $counter);
for ($i = 0 ; $i <= 9 ; $i++){
$num = (string)$i;
$img_num = '<img src="./images/counter/'.$i.'.gif">'; < - - - ここで数字を画像に変換
$new_counter = str_replace($num, $img_num, $new_counter);
}
$size = ' width="16" height="18" border="0" alt="アクセスカウンタ" />';
$new_counter = str_replace('>', $size, $new_counter);
print($new_counter);
?>
4.動作確認
ブラウザで動作確認する。 僕の ホームページ の場合、こんな感じ。
設定は以上です。
ただ、今回導入したものは単純なアクセスカウンタなので、画面更新するたびにカウンタがアップしてしまいます。
もうちょっと勉強して、 自分自身のアクセス時はカウントアップさせない、とか 同じセッション中はカウントアップさせない、とか カウンタのデータをMySQLで管理する、とか してみたいです。
ではまた。
Comments