<?php
# プログラム bbs.php STEP9
$submit = $HTTP_POST_VARS["SUBMIT"];
if ($submit=="送信") {
$name = $HTTP_POST_VARS["NAME"];
$mail = $HTTP_POST_VARS["MAIL"];
$body = $HTTP_POST_VARS["BODY"];
if ($name=="" or $body=="") {
echo '<font color="#FF000">必須項目入力エラー</font><br>';
echo 'お名前と本文は必ず入力してください<br>';
echo '<a href="javascript:history.back()">戻る</a>';
exit;
}
$body = str_replace("\r\n", "<br>", $body);
$dt = date("y/m/d H:i:s");
$fp = fopen("data.txt", "a");
fwrite($fp, "$name\t$mail\t$body\t$dt\n");
fclose($fp);
}
echo '
<html>
<head>
<title>PHP-BBS</title>
</head>
<body>
<h1>PHP-BBS</h1>
STEP9<br>
<form method="post" action="bbs.php" accept-charset="x-euc-jp">
お名前 <input type="text" size="16" maxlength="30" name="NAME">
メール <input type="text" size="30" maxlength="50" name="MAIL"><br>
本文<br>
<textarea rows="10" cols="70" wrap="soft" name="BODY"></textarea><br>
<input type="submit" name="SUBMIT" value="送信">
</form>
';
$data = file("data.txt");
foreach ($data as $value) {
$view = explode("\t", $value);
$name = $view[0];
$mail = $view[1];
$body = $view[2];
if ($mail=="") { echo "お名前:$name $view[3]<br>"; }
else { echo "お名前:<a href=\"mailto:$mail\">$name</a> $view[3]<br>"; }
echo "本文:$body<br>";
}
echo '</body></html>';
?>
|
$dt = date("y/m/d H:i:s");はPHPのローカル日付/時刻を書式化する命令です。
このPHPプログラムが実行されているマシンのコンピュータ時間を与えられた書式に従い変換し、$dtと言う任意の変数に値をセットします。
y:西暦年の下二桁
m:月(ゼロ埋め付き、すなわち01〜12)
d:日(ゼロ埋め付き、すなわち01〜31)
H:時(24時間形式のゼロ埋め付き、すなわち00〜23)
i:分(ゼロ埋め付き、すなわち00〜59)
s:秒(ゼロ埋め付き、すなわち00〜59)
例えば今、2003年6月1日、夕方の5時19分3秒だとすると、$dtの値は "03/06/01 17:19:03" と言う値がセットされます。
$fp = fopen("data.txt", "a");では、"data.txt"と言う名前のファイルを"a"ファイルの最下位行から追加書込みモードで開く、と言う意味になります。
今回のSTEP9ではこれだけで用が足りることになります。
fwrite($fp, "$name\t$mail\t$body\t$dt\n");では、本文($body)の後ろに$dtと言う書込み日時も一緒に記録するよう追加したものです。
"\t"と言う共通の区切り記号を入れている点に注意してください。
表示部分の変更として、せっかく書込み日時も記録しましたので同じように表示することにします。
$view = explode("\t", $value);を変更することなく、$view[3]($view[2]の本文の次)に書込み日時がセットされます。
※ここが良く分からない方は一つ前のSTEP8をもう一度読んでみてください。
書込み日時は「お名前」の後ろに表示します。
今回、質問はありません...
|