【PHP】簡易版カウンタ機能の実装

PHPを使ってホームページにカウンタを作成する方法について記載します。サーバ上に置いたカウントファイルでカウントする方式です。

環境

 OS ubuntu22.04 
 Webサーバ apache2.4.52 (サーバのIPは「192.168.19.128」とします)
 PHP 8.1.2-1ubuntu2.14(ctl)

カウンタプログラムの作成

 ホームページに閲覧者が訪れるたびに、来訪者数を1づつ増やしていき、何番目に来訪したのかを表示させます。
 来訪者数のカウントは、テキストファイルに数字を書き込むことで数えていきます。

 プログラムファイル名 counter.php
<?php
$counterFile = ‘counter.txt’; //カウントファイル
if (file_exists($counterFile)) {
$counter = intval(file_get_contents($counterFile));
} else {
$counter = 0;
}
$counter++; //来訪者数をインクリメント
file_put_contents($counterFile, $counter); // ファイル保存
echo “訪問回数: ” . $counter;
?>

 カウントファイル名 counter.txt
※ファイルの中は空でいいです

作成したら、ffftpを使ってubuntuにアップロードします。

フォルダの準備とアップロード

今回は、
  /var/www/html/php
というフォルダを作成し、ここに「counter.php」と「counter.txt」をアップロードしました。
 cgiなので、実行権限が必要になるので、パーミッションの変更を忘れないでください。
 私は、
  フォルダ /var/www/html/php パーミッション 707
  実行ファイル counter.php パーミッション 705
  カウントファイル counter.txt パーミッション 706
に設定しました。

実行結果の確認

 ブラウザから、
  http://192.168.19.128/php/counter.php
を呼び出すと、

  訪問回数: 1

と表示されれば成功です。

●問題点
 今回のプログラムでは、
   画面を更新する(F5)たびに訪問回数がインクリメントされてしまう
   http://192.168.19.128/php/counter.txtを直接閲覧されてしまう
という問題点があります。
 この問題点は、DBを使用すると解決できるのですが、DBのインストールが必要になるので、次の機会に解説します。