ホームページのお役立ち情報サイト
ホームページ作成 メニュー
HOME

HPのお役立ちトピック

Web作成のおすすめ本紹介

ホームページ作成入門

知って得するノウハウ集

HTML/CSSのテクニック集

JavaScriptのテクニック集

PHPを始めよう!
  基礎編
PHPってどんなもの?
文字を出力してみよう
変数を使ってみよう
演算子を使おう
配列を使おう
関数を自分で作ろう
  制御構文
[if]シンプルな条件分岐
[switch]if文を簡潔に記述
[while/for/foreach]ループ
  応用編
フォームのデータを受け取る
クッキーとセッション管理
  実践編
カウンタでファイルの読み書き
BBS(掲示板)を作ろう!


ホームページ 一言アンケート
HTML作成にメインで使っているソフトは?




 印刷用ページ

ご意見・ご感想
ご利用上の注意


実践Webデザイン塾
格安ADSL・電話加入権


【資料請求無料】 ★受講料の一部を国が支給!「WEBデザイナー養成講座」 Click Here!

PHPを始めよう!

アクセスカウンターでファイルの読み書きを覚えよう

アクセスカウンターとファイルの読み書きにどんな関係があるのでしょう・・・。
皆さんが通常パソコンで作業を行うことを考えてみてください。まず、必要なファイルを開きますよね。その後に、必要なものを書き加えて保存してから閉じると思います。実は、アクセスカウンターもこれと同じような動作をしているわけです。
カウンター用のファイルを開く → 今のカウントに1つ足す → 保存 → 閉じる
アクセスカウンタはこのような作業をアクセスの度に自動的に行ってます。

もっともシンプルなカウンターを作ってみましょう。

まず、0 とだけ入力したファイルをcounter.datという名前で保存します。この時に、ファイルのパーミッションを666にしてください。666とはサイトに訪れた人がカウンタファイルに読み書きができる設定です。
次に、以下のようなPHPのスクリプトを用意します。
・ソース

このスクリプトの解説

$fp = fopen($filename, "r+");
先ほど説明した「ファイルを開く」という作業がfopenという関数にあたります。 そこで、ファイル名を指定して開きます。また、r+というのは、読み込み書きこみ用にファイルポインタが先頭の状態で開くモードということです。分かりやすく言うと、前のカウントデータの上書き処理をしやすいモードということです。また、ファイルポインタというのは、ファイルの読み書きを行う場所と考えてください。
fopenのその他のモード
記述 処理内容 説明
'r' 読み込みのみ
ファイルポインタを先頭に置く
バイナリデータ読み込む時に用いることが多いです。
'r+' 読み込み&書き込み
ファイルポインタを先頭に置く
先頭から上書き処理をします。なので、前のデータより小さいデータを書きこむ際にはゴミが付く原因になるので注意が必要です。
'w' 書き込みのみ
ファイルポインタを先頭に置く
ファイルを空にするのが特徴です(これが原因でデータが飛んだりもします)また、ファイルが存在しない場合は新規作成を試みます。
'w+' 読み込み&書き込み
ファイルポインタを先頭に置く
使用頻度は低いですが、上記の読み込み&書きこみ版です。
'a' 書き込み
ファイルポインタを終端に置く
追記型です。ログなどの1行ずつ足していくタイプのものに重宝します。
'a+' 読み・書き
ファイルポインタを終端に置く
使用頻度は低いですが、上記の読み込み&書きこみ版です。


$count = fgets($fp,32);
開いたファイルから、現在のカウント数を読み込みます。128という数字に特に意味はありません。改行やファイルの最後に至るまでに32バイトまで読み込むということです。カウンタですので、これだけあれば十分でしょう。
$count++;
$countに1追加します。
fseek($fp, 0);
これは、ファイルポインタを先頭に戻す関数です。 fgetsで読みこむことによって、ファイルポインタは終端に移動してしまいます。書きこみ処理を行う前に強制的に戻す必要があります。
fputs($fp, $count);
ここで$countのデータの書きこみ処理を行います。
fclose($fp);
開いたファイルは必ず閉じる必要があります。

最後に出力して終了です。

ファイルのロックをしよう! -ファイルの誤作動や損傷を防ぐ-

もし、ファイル共有などで自分がファイルの編集を行っている時に、他人が上書きしようとすると大変困りますよね。アクセスカウンタにもこのような状態に陥る時があります。そんな時には、自分がファイルを読みこんでいる間だけロックしてしまいます。ファイルロックをすることによって、ファイルの損傷や誤動作を防ぐことができます。
・ソース
また、PHPのバージョンが4.01より前の場合は、

flock($fp, LOCK_EX);
の部分を
flock($fp, 2); に変更してください。

flock($fp, LOCK_UN);
の部分を
flock($fp, 3);
に変更してください。

出力フォーマットを変えてみよう

$count++; の次の行に、
$count = sprintf("%06d", $count);
という1行を足してみましょう。桁数を0で補い、6桁で表示されるようになります。
例)000154
もし、5桁にしたいのであれば、"%05d"に変更します。

このアクセスカウンタを通して、ファイルの読み書きの考え方がある程度ご理解いただけたと思います。これを基本的に、データベースを使わず、テキストベースのログで管理するWebアプリケーションは、これの応用になります。ファイルの扱いを理解することが、PHPの大切な部分の1つ言えるでしょう。

オススメ!PHPが使える格安レンタルサーバーのご紹介

【格安】月々833円で独自ドメインも使える! (株)ジェイナビ
PHPが利用可能で値段が月々833円という格安のレンタルサーバーです。SSHでのアクセスも可能な上、MySQLも使えるので、ちょっとしたデータベース系のサイトの構築も可能です。充実したコントロールパネルや、無制限のPOP3アカウントなど、レンタルサーバーとして基本的な機能も揃っています。

3,000台超のサポート実績を誇る最強の専用ホスティング!
AT-LINK専用サーバ・サービス
Click Here! (株)リンク
本格的なWebサイトの運用を考えている方や法人の方には、専用サーバーがお勧めです。専用サーバーとは、1台のサーバーを1人のユーザーのみで運用が出来るサービスで、100人前後で切り分けて利用するレンタルサーバーに比べて安定した運用が可能になります。ページビューが多いサイトや、プログラムを使った高負荷なサイトに最適です。 (2003/06現在) Click Here! Click Here!

オススメ!分かりやすいPHP関連書籍を最短24時間でお届け!




  PageTop   
ホームページ制作
Copyright© 2003 1kara.net All right reserved.
[PR]おすすめコンテンツ:
iアプリ検索ゲーム通販転職自動車保険無料着メロゲーム攻略郵便番号検索ショッピングモール健康食品ダイエット年収
オンラインショップ「買っ得.com」
  ブランド品 販売(グッチ・ティファニー)美容健康 ダイエット サプリメント販売CD DVD 販売ゲームソフト 攻略 本 雑貨 インテリア英語教材 英語学習
豆乳クッキーダイエット自動車保険 口コミ通販化粧品 口コミダイエット 口コミ
画像カウンター