ふるきよき時代にさかえたアクセスカウンタを作った
今日日アクセスカウンタなんて、というのもあるのだけれど僕はそういったものが好きなので作ってしまった。
ちょうどこちらにサンプルがあったのでついやってしまったよ。例によってプログラムは少し改変してますが…
PHPサンプルプログラム
アクセスカウンタ、その昔にあったキリ番文化、知らない人同士で交流をする良いきっかけになっていた気がする。今はもっと能動的に動かないと交流できない気がするもの。コミュ障には辛い時代になったものだ。
アクセスカウンタをつくったよ。PHPで
もうApacheを導入したほうがいいんじゃないのみたいな感じがするけど、そんなにすごいものを作っているわけでもないのでphp -S localhost:8000
コマンドでやっていくよ。
こんなのつくったよ。
作ったと言ってもコピペ改変だからどうなのみたいなところはあるけれど……
以下、ソースコード。
<html> <head> <meta charset="UTF-8"> <title>アクセスカウンタ</title> </head> <body> <?php $counter_file = 'counter.txt'; // カウンタ数 $counter_length = 5; // テキスト処理 $fp = fopen($counter_file, 'r+'); if ($fp){ if (flock($fp, LOCK_EX)){ $counter = fgets($fp, $counter_length); $counter++; rewind($fp); if (fwrite($fp, $counter) === FALSE){ print('ファイル書き込みに失敗しました'); } flock($fp, LOCK_UN); } } fclose($fp); // HTML処理 $format = '%0'.$counter_length.'d'; $new_counter = sprintf($format, $counter); for ($i = 0 ; $i <= 9 ; $i++){ $num = (string)$i; $img_num = '<img src="./number_'.$i.'.png">'; $new_counter = str_replace($num, $img_num, $new_counter); } $size = ' width="16" height="18" border="0">'; $new_counter = str_replace('>', $size, $new_counter); print('訪問者数:'.$new_counter.'人目です'); ?> </body> </html>
読み込むファイル名以外いじるところがなかった。
fopen、flock、rewind、fcloseあたりを適当に改変してたら警告(Warning)エラーを出してきたので、以下に関数の詳細でもメモして次回はエラーを出さないような工夫ができるように頑張りたいと思います。ちなみに、警告エラーはそんなファイル存在しないよとかそういった内容です。
関数 | 説明 |
---|---|
fopen('ファイル名', 'モード') | ファイルまたはURLを開く |
flock('ファイルポインタ', 'ロックの種類') | 汎用のファイルロックを行う |
fgets('ファイルポインタ', '長さ') | ファイルから1行取得する |
fclose('ファイルポインタ') | オープンされたファイルポインタをクローズする |
rewind('ファイルポインタ') | ファイルポインタの位置を先頭に戻す |
関数の詳細はこちらより。
PHP: ファイルシステム 関数 - Manual