mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

PHPでアクセスカウンタ!

[ webサイト, サーバ構築 ] [ PHP ]

こんばんは。

今日は ホームページ のアクセスカウンタをPHPで自作してみました。

今までもアクセスカウンタはつけていましたが、プロバイダの提供するCGIを使っていました。

やはり自宅サーバで運用するからには自分で作らないとと思って、アレコレと調べながら自作しました。 いろんな方法があると思います。 自分でいい方法を試してください。

今回はテキストファイルに書き込む形のもので数字は画像ファイルを使用するものを作りました。 (簡単なやつです)

導入記録

1.画像ファイルの準備

数字に使用する画像を0から9までの10個、自分の好きなデザインのものをWEB上から探してダウンロードする。 ダウンロードした画像のファイル名は 0 用は「 0.gif 」というようにわかりやすいものにし、Webサーバにアップロードする。 ※当方の場合、ドキュメントルートの「 images/counter/ 」に配置しました。

2.カウンタ保存用のテキストファイル作成

適当なファイル名、内容は適当な数字でテキストファイルを作成しWebサーバにアップロードする。 さらにサーバがLinuxの場合、このテキストファイルに書き込みができるような権限「 666 」を与える。 ※当方の場合、「 counter.txt 」というファイル名にし、ドキュメントルートの「 dat 」フォルダに配置しました。 ※内容の最後は改行せずに保存すること。改行するとカウンタが更新されませんので。

3.ソース作成

以下のようなPHPソースをカウンタを設置したい箇所に記述する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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.動作確認

ブラウザで動作確認する。 僕の ホームページ の場合、こんな感じ。

php_accesscounter_01


設定は以上です。

ただ、今回導入したものは単純なアクセスカウンタなので、画面更新するたびにカウンタがアップしてしまいます。

もうちょっと勉強して、 自分自身のアクセス時はカウントアップさせない、とか 同じセッション中はカウントアップさせない、とか カウンタのデータをMySQLで管理する、とか してみたいです。

ではまた。

Comments