SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

PHP 基礎編12 - アクセスカウンタ作成、file_exists、sprintf、filesize、header

■アクセスカウンタ作成 (PHP3、PHP4)

  ・単純なアクセスカウンタは、次のように作成できる。
    ファイルロックする代わりにリードエラーチェックで逃げている。
    これでも十分に実用になるだろう。
    但し、リロード対策は実施していないので、ぽんぽんカウントするカウンタ
    ではある。

  ・ロケーションは、サイトトップの下に counter フォルダを作成し、
    その counter フォルダに counter.php と 0 〜 9.gif の画像ファイルを置
    くものとしている。画像は適当に容易すればよい。

  ・カウンタファイルの初期リードエラー対策として、
    @fopen("$ctfile", 'r') と @ でエラー抑制している。
    1 件目で counter.dat ファイルが counter フォルダに作成される。

<?php
/*
========================================================================
  counter.php アクセスカウンタ
========================================================================
*/
// 準備
  $ctfile  = 'counter.dat';
  $imgfld  = '.';
  $imgtype = 'gif';

// カウンタ参照
  $ct = 0;
  if (($fno = @fopen("$ctfile", 'r'))) {
    $ct    = fgets($fno, 32000);
    fclose($fno);
  }

// 参照エラーチェック
  if ($ct == '' || $ct < 1) {
    if (file_exists("$ctfile")) exit;
  }

// カウンタ加算
  if ($col == '1') {
    if (($fno = fopen("$ctfile", 'w'))) {
      $ct++;
      fwrite($fno, "$ct", 32000);
      fclose($fno);
    }
  }

// カウンタ桁位置
  $num = substr(sprintf("%09d", $ct), 9 - $col, 1);

// 画像送信
  sndimg($num);

// 終了
  exit;
/*
========================================================================
  sndimg 画像送信
========================================================================
*/
function sndimg($num)
{
global $imgfld, $imgtype;

// 画像リード
  if (!($fno = fopen("$imgfld/$num.$imgtype", 'rb'))) exit;
  $size = filesize("$imgfld/$num.$imgtype");
  $img = fread($fno, $size);
  fclose($fno);

// イメージ表示
  header("Content-type: image/$imgtype");
  print($img);

// リターン
  return;
}
?>

  ・アクセスカウンタの呼び出しは、次のように HTML に組み込む。
    IMG タグで呼び出すのが汎用性があって良いだろう。
    最長 9 桁まで指定できる。

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>アクセスカウンタテスト</TITLE>
</HEAD>
<BODY>
<P>アクセスカウンタテスト</P>
<IMG src="counter/counter.php?col=6" border="0">
<IMG src="counter/counter.php?col=5" border="0">
<IMG src="counter/counter.php?col=4" border="0">
<IMG src="counter/counter.php?col=3" border="0">
<IMG src="counter/counter.php?col=2" border="0">
<IMG src="counter/counter.php?col=1" border="0">
</BODY>
</HTML>

■PHP 基礎編資料
■PHP + MySQL 編資料
■CGI-Perl 基礎編資料
■CGI-Perl 基礎実地編資料
■CGI-Perl 応用実地編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK