【PHPの基礎】訪問者数を表示する『カウンター』を作成する方法
PHPで訪問者数を数えるカウンターを作成する方法です。
備忘録的なまとめです。
書き込みようのファイルを作成する
新規作成ファイル:index.php
<?php
function set_count( $file_name = "counter.txt"){
if( file_exists($file_name) ){
// ファイルを読み込む
// カウンターの数字を増やす
}else{
// ファイルが存在しなかった場合の処理
// ファイルを作成する
// "w+" ... 読み込み/書き出し用にオープンする
$handle = fopen($file_name , "w+");
}
}
set_count();
上記を実行するとcounter.txtが生成されます。
カウンターの初期値を設定する
function set_count( $file_name = "counter.txt"){
if( file_exists($file_name) ){
// ファイルを読み込む
// カウンターの数字を増やす
}else{
// ファイルが存在しなかった場合の処理
// ファイルを作成する
// "w+" ... 読み込み/書き出し用にオープンする
$handle = fopen($file_name , "w+");
// カウンターの初期値を設定する
fwrite($handle, 1);
// ファイルを閉じる
fclose($handle);
}
}
set_count();
一度、counter.txtを削除して、上記プログラムを実行すると、
counter.txtに1が書き込まれます。
ファイルを読み込む
if( file_exists($file_name) ){
// ファイルを読み込む
$handle = fopen($file_name, "r");
$count = fread($handle, 20);
echo $count; die();
// カウンターの数字を増やす
ここまでのプログラムを、die();を使って実行してみます。
結果は『1』が表示されます。
※fread(第1引数, 第2引数)
第1引数:handleファイルポインタ
⇒読み込みたいファイルのファイルポインタを指定します。
第2引数:length
⇒最大 length バイトまで読み込む。
次にgettypeで文字形式を確認してみます。
echo gettype($count); die();
出力結果には『string』が表示されます。
しかし、カウンターでは数字を扱うため、『integer』にしなくてはいけません。
よって、以下のように変更します。
$count = (int)fread($handle, 20);
echo gettype($count); die();
カウンターの数字を増やす
if( file_exists($file_name) ){
// ファイルを読み込む
$handle = fopen($file_name, 'r');
// カウンターの数字を増やす
$count = (int)fread($handle, 20) + 1;
カウンターの数字をファイルに書き込む
// カウンターの数字を書き込む
// "w" ... 書き込みモード
$handle = fopen($file_name, 'w');
fwrite($handle, $count);
// ファイルを閉じる
fclose($handle);
set_countファンクションでカウントされた数字を出力する
以下のように変更していきます。
<?php
function set_count( $file_name = "counter.txt"){
if( file_exists($file_name) ){
// ファイルを読み込む
$handle = fopen($file_name, 'r');
// カウンターの数字を増やす
$count = (int)fread($handle, 20) + 1;
// カウンターの数字を書き込む
// "w" ... 書き込みモード
$handle = fopen($file_name, 'w');
fwrite($handle, $count);
// ファイルを閉じる
fclose($handle);
}else{
// ファイルが存在しなかった場合の処理
// ファイルを作成する
// "w+" ... 読み込み/書き出し用にオープンする
$handle = fopen($file_name , 'w+');
// ここを追加
$count = 1;
// カウンターの初期値を設定する
// ここを変更
// fwrite($handle, 1);
fwrite($handle, $count);
// ファイルを閉じる
fclose($handle);
}
// ここを追加
return $count;
}
echo set_count();
完成コードを以下のように短くすることもできます
function set_count( $file_name = "counter.txt"){
if( file_exists($file_name) ){
// ファイルを読み込む
// カウンターの数字を増やす
$count = (int)file_get_contents($file_name) +1;
// ファイルに書き込む
file_put_contents($file_name, $count);
}else{
// ファイルが存在しなかった場合の処理
// ファイルを作成する
$handle = fopen($file_name , 'w+');
$count = 1;
fwrite($handle, $count);
fclose($handle);
}
// ここを追加
return $count;
}
カウンターをページに表示する
まず、index.phpに以下を追加します。
require "index.tmpl.php";
次に、index.tmpl.phpを作成します。
新規作成ファイル:index.tmpl.php
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>カウンター</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<h1>カウンター</h1>
<p>あなたは<?php echo set_count(); ?>番目の訪問者です。</p>
</body>
<script type="text/javascript" src="myscript.js"></script>
</html>
以上で完成です( ◜◡‾)
※P.S:無料メルマガで発信中:過去の僕は「ブログ発信で5億円」を稼ぎました。次は「30億円」を目指します。挑戦しつつ、裏側の思考を「メルマガ」から発信します。不満足なら1秒で解約できます。無料登録は「こちら」です。