ファイルを使ったプログラム

いままで紹介してきた例題のプログラムではデータが毎回消えてしまいました。

しかし、実際にはデータを保存しておいて、実行時にはそのデータを使って動作するようなことが多いと思います。

こういう場合、2つの方法があります。

  • テキストファイルにデータを保存しておく。
  • データベースにデータを保存しておく。

このセクションの説明はテキストファイルにデータを保存しておくプログラムを説明します。


アクセス・カウンタの作成

ここまで読み進んでいれば、アクセス・カウンタを作ることができます。ここではグラフィック・アクセス・カウンタをPHPで作ってみましょう。

プログラムを作る前に、アクセスカウンタの動作原理を考えてみます。

  1. カウント・データを保存するテキスト・ファイルがなければ新規にファイルを作ります。
  2. 直前のアクセス数をファイルから取得します。
  3. 取得したアクセス数に1加え、今回のアクセス数とします。
  4. 今回のアクセス数をファイルへ保存しておきます。
  5. 今回のアクセス数を使って<img>タグを生成します。

アクセスカウンタは色々なページで使う可能性のあるプログラムですから、 これだけで別のファイルにしてPHPを書きます。実行時はindex.phpをブラウザで表示してください。

なお、このプログラムを実行するには、0.gif〜9.gifのファイルが必要です。

count.php
<?php

// アクセスカウンタの桁数を定義
define(count_length, 5);

// データの保存場所を定義
define(data_dir , "./data/");
define(data_file, "count.txt");

$data_path = data_dir . data_file;

if (file_exists($data_path)) {	// データ・ファイルがあるかをチェック
	// データファイルがあるのでカウント数を更新
	$fp = fopen($data_path, "r+");	// ファイルを読書き可能でオープン

	// 直前のカウント数を取得
	// キャストして強制的に整数型にしている
	$count = (int)fgets($fp);

	fseek($fp, 0, SEEK_SET);		// ファイル・ポインタを先頭に移動
	fputs($fp, ++$count);			// 現在のカウントをファイルへ保存
	fclose($fp);					// ファイルを閉じる
}
else {
	// データ・ファイルがないので作成
	@mkdir(data_dir , 0777);		// 保存するディレクトリを作成
	$fp = fopen($data_path, "w");	// ファイルを新規生成
	fputs($fp, "1");				// カウンタの初期値を1とする
	fclose($fp);					// ファイルを閉じる
	$cnout = 1; 					// 現在のカウント数を1とする
}

// IMGタグの生成
$buf = sprintf("%0" . count_length . "d", $count);
for ($i = 0; $i < count_length; $i++) {
	echo "<img src=\"" . substr($buf, $i, 1) . ".gif\">";
}
?>
index.php
<html>
<body>

<p>カウンタはうまく表示されますか?</p>

<?php require("count.php") ?>

<p>ページを更新するとカウントUPするはずです。</p>

</body>
</html>

新たに出てきた関数がいくつかありますが、これらはCの関数とほぼ同じです。

説明は書きませんので、詳しくは「日本PHPユーザー会」のオンライン・ドキュメントを参照してください。

このカウンタの実行結果

戻る

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org