テキストのアクセスカウンタ

広告

ここではファイルを使ってアクセスカウンタを作成してみます。アクセスカウンタの値を保持するファイルを1つ作成し、ページが表示されるたびにファイルの値を参照してアクセスカウンタを表示します。

まずアクセスカウンタを表示するページが表示された段階でアクセスカウンタを保存してあるファイルを「r+」モードで開きます。

$counter_file = 'counter.txt';

$fp = fopen($counter_file, 'r+');

fclose($fp);

※モードを「r+」で開く場合、ファイルが存在しないとエラーになりますので注意して下さい。

現在のカウンターの値を読みとります。アクセスカウンターの桁数は8桁にしておきます。

$counter_file = 'counter.txt';
$counter_lenght = 8;

$fp = fopen($counter_file, 'r+');

if ($fp){
    if (flock($fp, LOCK_EX)){

        $counter = fgets($fp, $counter_lenght);

        flock($fp, LOCK_UN);
    }
}

fclose($fp);

カウンターの値を「+1」します。ファイルポインタの位置を先頭に戻してからファイルに書き込み、その後カウンターの値を表示します。

$counter_file = 'counter.txt';
$counter_lenght = 8;

$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);

print('count:'.$counter);

以上で完成です。

では実際に試して見ます。

counter1.php

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

$counter_file = 'counter.txt';
$counter_lenght = 8;

$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);

print('count:'.$counter);

?>
</body>
</html>

またカウンター保存用ファイルとして、「counter.txt」というファイルを1つ用意して、ファイルに「0」とだけ入力して保存しておきます。

counter.txt

では「couner1.php」と「counter.txt」をWWWサーバの同じディレクトリに設置しブラウザ経由で「counter1.php」を見ると下記のように表示されます

アクセスカウンター

ブラウザの再読み込みなどを使って同じページを再度見てみます。

アクセスカウンター

上記のようにカウンターの値が増加して表示されます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)