😉

アクセスカウンター:ファイル編(発展版)

2024/08/11に公開

この記事の動作サンプルはこちら

この記事について

この記事は、以下の本の連載記事です。
https://zenn.dev/phpbeginners/books/49b9ede3c8c30e/viewer/62bec3

アクセス数を日付毎のファイルに保存する❗

この記事は、アクセスカウンターの発展版です。簡単版、難しい版をクリアしてから挑戦することをお勧めします❗❗
https://zenn.dev/phpbeginners/articles/9cb6d030c1ce57
https://zenn.dev/phpbeginners/articles/f2780aba2b6548

日付毎にアクセス数をカウントするプログラム

コメントは3点リーダーにしています。その箇所のプログラムの意味を自分で調べて、コメントを追記してみましょう❗

count_date.php
<?php
//	...
error_reporting(E_ALL);

//	...
$dir = 'counter';

//	...
if(!file_exists($dir)){
	$current_directory = getcwd();
	echo "<p style='color:red;'>This directory does not exist. ($current_directory, $dir)</p>";
	return;
}

//	...
if(!is_writable($dir) ){
	echo "<p style='color:red;'>Please add write permission to this directory. ($dir)</p>";
	return;
}

//	...
$date = date('Y-m-d');

//	...
$file_path = "{$dir}/{$date}.txt";

//	...
if(!file_exists($file_path) ){
	if(!touch($file_path) ){
		echo "<p style='color:red;'>Please add write and execute permission to this directory. ($dir)</p>";
		return;
	}
}

//	...
if(!is_writable($file_path) ){
	echo "<p style='color:red;'>Please add write permission to this file. ($file_path)</p>";
	return;
}

//	...
$today = file_get_contents($file_path);

//	...
$today++;

//	...
file_put_contents($file_path, $today, LOCK_EX);

//	...
$yesterday = date('Y-m-d', strtotime('-1 day'));

//	...
$file_path = "{$dir}/{$yesterday}.txt";

//	...
if( file_exists($file_path) ){
	$yesterday = file_get_contents($file_path);
}else{
	$yesterday = 0;
}

//	...
var_dump($yesterday, $today);

うまく動きましたか?

もしうまく動かなかった場合は、LINEのオープンチャットで質問してみて下さい。
https://line.me/ti/g2/VzA0pNDlUBijLGr67gbpi-K0TtyeD5Tr3taV7g

もしうまく動いたら、次はデータベース編に挑戦してみましょう❗
もしうまく動かなくても、気晴らしにデータベース編に挑戦してみましょう❗
https://zenn.dev/phpbeginners/articles/7add14cd3b1d94

Discussion