ポンクソフト

テキストカウンタ - PHPでアクセスカウンタ&解析

前ページ PHPでアクセスカウンタ&解析 TOP 次ページ

目次

  1. PHPでアクセスカウンタ&解析
  2. テキストカウンタ
  3. 画像カウンタ
  4. アクセス解析1
  5. アクセス解析2
  6. アクセス解析3
  7. アクセス解析4

テキストカウンタ

テキストで表示するカウンタを作成します。

ページの作成

まずカウンタを表示するページを作成します。以下のソースを入力してください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>トップページ</title>
</head>
<body>
<p>
あなたは<?php require "counter1.php" ?>人目のお客様です。
</p>
<p>
このページはアクセスカウンタ用のサンプルページです。
</p>
</body>
</html>
入力が終わったら「page1.php」という名前でサーバにアップします。

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

次にアクセスカウンタのプログラムを作成します。以下のソースを入力してください。
<?php
// アクセスカウンタ1

$fp = @fopen("counter1.txt", "r+") or die("Counter Error");
flock($fp, LOCK_EX);
$count = fgets($fp);
$count++;
rewind($fp);
fputs($fp, $count);
fclose($fp);

print $count;
?>
入力が終わったら「counter1.php」という名前でサーバにアップします。

カウンタファイルの作成

次にアクセスカウントを保存するためのファイルを作成します。新規テキストファイルを作成し
0
とだけ記述して(改行は入れない)、「counter1.txt」という名前でサーバにアップします。その後、カウンタファイルを書き換え可能にするために、FTPソフトの「属性変更」から「その他」に書込許可属性を与えます。

実行

以上の用意ができたら、page1.php をブラウザでアクセスしてみてください。リロードするたびにカウンタが増えれば正常です。

page1.php ソースの解説

あなたは<?php require "counter1.php" ?>人目のお客様です。
require 文によって、この位置に counter1.php を取り込んでいます。結果として、ここにカウンタが表示されることになります。

counter1.php ソースの解説

$fp = @fopen("counter1.txt", "r+") or die("Counter Error");
ファイル counter1.txt を読み書き両用でオープンし、ファイルポインタ $fp に設定しています。関数名の前に @ を付けると、関数のエラーを画面に出力しないようになります。die は引数に設定したメッセージを表示して終了する関数です。or 演算子は、左側の式が真、つまり fopen がエラーでないときは、右側の式を評価しません。左側の式が偽、つまり fopen がエラーのときに右側の式が評価されます。つまり、fopen がエラーならば die が実行されてプログラムが終了するのです。
flock($fp, LOCK_EX);
カウンタファイルに同時にアクセスされると動作がおかしくなる場合があるので、ロックをかけます。
$count = fgets($fp);
ファイルから一行読み出して $count に代入しています。
$count++;
$count をひとつカウントアップします。
rewind($fp);
ファイルの先頭にポインタを戻しています。これを実行しないと、fgets で読み出した次の位置に書込みがされてしまいます。つまり counter1.txt の内容は 012345… となってしまうのです。
fputs($fp, $count);
ファイルに、カウントアップした $count を書き出しています。

指定した桁数まで 0 で埋める

counter1.php を開き、
print $count;
の文を
print str_pad($count, 10, '0', STR_PAD_LEFT);
と変更して、page1.php を確認してみてください。
str_pad は、指定した桁数に達するまで指定した文字列で埋める関数です。ここでは 10 桁に達するまで、0 で埋めます。STR_PAD_LEFT は文字列の左を埋める指定です。

指定した桁数まで 0 で埋める その2

counter1.php を開き、
print $count;
の文を
printf("%010d", $count);
と変更して、page1.php を確認してみてください。
printf は、第1引数で指定したフォーマットに沿って文字列を出力する関数です。C言語を知っている人ならばこちらの方が使いやすいでしょう。

カンマ区切りにする

counter1.php を開き、
print $count;
の文を
print number_format($count);
と変更して、page1.php を確認してみてください。
number_format は、引数で指定された文字列を3桁でカンマ区切りにして返す関数です。counter1.txt に大きい桁数の数値を書いてアップして確認してみてください。
前ページ PHPでアクセスカウンタ&解析 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:



すごく参考になりました!
ありがとうございます。
2017/03/30 09:47

名無しのリーク
香川県ルーちゃん餃子のフジフーヅはバイトにパワハラの末指切断の大けがを負わせた犯罪企業
2017/03/29 23:34

高級時計 ブランド レディース
特恵中-新作入荷!
当社の商品は絶対の自信が御座います
迅速、確実にお客様の手元にお届け致します
実物写真、付属品を完備しております。
低価格を提供すると共に、品質を絶対保証しております
ご注文を期待しています
2017/03/28 18:37

カルティエ ソリテール
ブランドコピーブランドN級品専門店
史上最も激安ブランドブランドコピー-即日 配送可,100%入荷。
当店は正規品と同等品質は品質3年保証でご注文から5 日でお届け致します。
レディースとメンズ激安通販専門店!品質と本物は同様です。
全て新品、高い品質、激安 、送料は無料です( 日本全国)すべての商品は品質2年無料保証です。
ブランドコピー時計:
2017/03/24 14:04

カリマー
解りやすくて、とてもいいサイトですね!
phpは初心者ですが、最後まで到達できるよう頑張ります!
2017/03/23 04:03


ああああ
2017/03/23 00:54

オメガ ボーイズ
★2017最高等級新しい商品大量入荷!
■在庫情報随時更新!(*^-^*)
■信用第一、良い品質、低価格は。
★歓迎光臨★送料無料(日本全国)
ご注文を待ちしております
よろしくお願いいたします_(._.)_
2017/03/22 09:09


テスト
2017/03/21 14:02

ゆうた
かりんがすき
2017/03/17 14:36

saraebo
別windowsとして実装することなく、actionのphpで、コマンドとするデータベース等の更新で、その結果をクライアントに返さない(homeページの元画面は変わらない。)とする事はできるのでしょうか?
2017/03/17 12:09

残りを読む »