1行掲示板を作ろう

1行掲示板の考え方

 1行掲示板とは、その名の通り、ユーザーが1行づつコメントを残していく掲示板のことです。実際には、ホームページ訪問の足跡などに使われます。通常の掲示板、さらにはブログなども、基本的な部分は同じですので、勉強になると思います。

今回は、作りやすさも踏まえて、次のような仕様を考えました。


さて、今回は次の手順で作ります。

 それではスクリプトを紹介します。
【one_bbs.php】  ここで新しく使用した表記を説明します。
まずは冒頭に出てくるHTMLです。
<META http-equiv="content-type" content="text/html; charset=EUC-JP">
ここでは、最後のEUC-JPだけ注目してください。コンピューターの種類により違う漢字などの文字コードを指定しています。日本語を処理する場合、文字化けを防ぐための必需品です。PHPの場合、サーバーのディフォルトを変えない限りEUC-JPです。詳しくは言いませんが、HTMLの<head></head>の間に、この記述が必要だと、記憶して置いてください。

if($fp)
 ファイルの読み書きは前項で書きましたが、ここで補足です。$fpは、ディスクに保管されたデータの場所を示しています。この数値がTrueであることは、ファイルが正常にオープンしたと言うことになります。

while( ! feof( $fp ) ){}
whileは、{}内を、条件が成り立っていれば繰返しをするものです。この繰返しは今回のポイントなので、詳しくは後述します。
feofは、「$fpで示したデータが終わりかどうか」を判断する関数です。これに否定形「!」が付いているので、データが終わりでなければ繰返しなさいという意味になります。

trim
trimとは、文字列の前後に不要な文字があったら取り除くという意味です。具体的には、空白、改行、タブなどを自動で取り除きます。プログラミングしていると、この手の関数がいかに重宝するかわかります。ここでは、そういうものだと覚えて置いてください。

array_unshift(配列変数,データ)
 これは、配列の先頭に新しいデータを割り込ませる記述です。必須の関数ではありませんが、これを使わないとスクリプトが長くなるので、ここではあえて使いました。なお、新しいデータを追加ではなく、上部に割り込ませるのは、実際の表示にあわせたかったのと、一定以上の古い書き込みを削除する処理を解りやすくしたかったからです。

繰返し処理のいろいろ

 繰返し同じ処理をさせるというのは、コンピューターの得意技です。しかしながら、プログラミングする側にとっては、落とし穴が多いのも忘れてはいけません。ここでは、PHPでよく使う繰返し命令と注意点を紹介します。

【while(この条件が成り立つなら繰り返します){処理}】
 もっとも良く使われる繰返し処理です。条件が、$a==10の場合、$aが、10であれば処理を実行します。ここで2つのポイントがあります。
1、条件が否定された場合は、処理されない
2、条件が変動する記述が無い、または空欄の場合は、永久ループになる

【for( 初期値; 条件; 変化 ){処理}】
 for関数も繰返しです。実施の値を入れてみると解りやすいと思います。
for( $i=0; $i==10; $i++){処理}
これは、日本語に表すと、こういうことです。
まずは、$iを、ゼロと決めます。この$iが、10になるまで、繰り返します。$iは繰り返すたびに1づつ増えるものとします。
ちなみに、$i++の++とは、値を1つ増やしなさいということです。$i=$i+1とほぼ同じです。このように条件式が一定の変化をする場合は便利です。※条件を空欄にしたり、変化に関係ない条件を指定すると永久ループになります。

さて、この2つの繰返しですが、使い方しだいで同じ表現が出来ます。好きな方を使っていただければOKです。
 しかしながら、繰返しを使うときの最大の問題を忘れてはいけません。それは永久ループです。
例えば、
while( ){}・・・条件なし
などとすると、永遠に繰り返します。エラーも出ません。$a==$bなどの比較を間違えて、$a=$bとしても同じです。forの場合も同じです。
 この永久ループは、プログラミングの大きな問題になります。なぜなら、エラーが出ないまま、過酷な処理をパソコン(サーバー)に強いるからです。

 例えば、今回のよなデータ保存。一度ではなく、ループを使って必要回数のデータを保存しています。これが永久ループにはまると、このプログラムは永遠にハードディスクにデーターを書き続けることになります。それはつまり、システム自体を破壊したり、著しく不安定にすると言うことです。

このページで紹介している環境であれば、おかしいと思ったときに、XSASを終了すれば良いでしょう。それで済む場合がほとんどです。ところが、大切なシステムを背負ったサーバーや、レンタルサーバーなどでは、重大な情報の損失、多人数への損害など、個人のミスの一言では済まされない場合も十分に考えられます。(もちろん、レンタルサーバーなどは、それなりの対策はしていると思いますけど)

<数当てゲーム>-Top-<プログラミングの手順>