今まで紹介した機能を使い簡単なチャットのスクリプトを書きます。
このスクリプトは入力されたデータをサニタイズして保存して
最新5回までの過去の発言を表示する機能を持たせています。
簡単チャットのソース
<?php
if(isset($_POST["botan"]))
{
$moji='"';
$moji.=htmlspecialchars($_POST["namae"],ENT_NOQUOTES);
$moji.='"';
$moji.=",";
$moji.='"';
$moji.=htmlspecialchars($_POST["data"],ENT_NOQUOTES);
$moji.='"';
$moji.=",";
$moji.='"';
$moji.=date("Y/m/d G:H:s");
$moji.='"';
$moji.="\r\n";
$file=@fopen("test10_2.csv","a");
if(!$file)
{
}
else
{
fputs($file,$moji);
fclose($file);
}
$_POST["botan"]=NULL;
}
?>
<?php
$file=@fopen("test10_2.csv","r");
if(!$file)
{
}
else
{
$i=0;
while($data=fgetcsv($file,1024))
{
$List[$i]=$data;
$i++;
}
fclose($file);
print "<table border=1>";
for($i=count($List)-5;$i<count($List);$i++)
{
if($i<0)
{
continue;
}
print "<tr>";
for($j=0;$j<count($List[$i]);$j++)
{
print "<td>";
print nl2br($List[$i][$j]);
print "</td>";
}
print "</tr>";
}
print "</table>";
}
?>
<br>
<form method="post">
名前 <input type="text" name="namae" maxlength="10" value="名前">
<br>
データ<textarea name="data" cols="16" rows="2" wrap="hard" maxlength="256">
初期値の文字
</textarea>
<br>
<input type="submit" name="botan" value="送信">
</form>
実行すると過去に入力された名前と文字データと投稿した時間を
最新の5レコードをテーブルに入れて表示し
入力項目として名前・データ・送信ボタンが表示されます。
レコード自体は最新5レコード以上あっても削除せず
どんどんレコードが増えていきます。
その為、レコードを追加していくとファイルをサイズも大きくなり
実行速度も落ちていく弱点もあります。
他にもデータのバックアップとらないとかファイルロックしていないとか
修正すべき点もあります。
次回からもっと立派なフォームにする機能を紹介ます。
まずはファイルをロックする機能を書きます。
