PHPでひとこと掲示板を以下の要件を満たすように作成しています。
・利用者が名前とコメントを入力し、発言できる。
・利用者の過去の発言内容をテキストファイルで管理する。
・全ての利用者の過去の発言内容を一覧で表示する。一覧には「名前」「コメント」「発言日時」の3つを1行ずつ表示する。
・利用者の名前は最大20文字以内まで発言できる。もし20文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
・利用者のコメントは最大100文字以内まで発言できる。もし100文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
・利用者の名前とコメントは必ず文字が入力される。もし名前あるいはコメントが未入力で発言した場合はエラーメッセージを表示し、発言できないようにする。
・(ソースコード)比較演算子は、「===」や「!==」を利用する。
『(!) Parse error: syntax error, unexpected end of file in /home/ec2-user/environment/htdocs/php/php/13/bbs.php on line 73』というエラーメッセージが表示されます。最後の</html>が72行目になります。
初心者なので色々調べながら作成しましたが、以下のコードでおかしいところのご指摘をお願いします。また、よろしければ皆さんのプログラミングのオススメ学習法を教えていただけると幸いです。よろしくお願い致します。
<?php
const FILE_NAME = './bbs.txt';
$date = date("Y-m-d H:i:s");
$log = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
// $comment = $_POST['comment'];
// $log = $name . ':' . $comment . '-' . $date . "\n";
if (($fp = fopen(FILE_NAME, 'a')) !== false) {
if ((mb_strlen($name) <= $name_max) && (mb_strlen($name) !== 0)){
print '名前は20文字以内で書いてください';
if (fwrite($fp, $name) === false) {
print 'ファイル書き込み失敗';
}
}
fclose($fp);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// $name = $_POST['name'];
$comment = $_POST['comment'];
$log = $name . ':' . $comment . '-' . $date . "\n";
if (($fp = fopen(FILE_NAME, 'a')) !== false) {
if ((mb_strlen($comment) <= $comment_max) && (mb_strlen($comment) !== 0)){
print 'ひとことは100文字以内で書いてください';
if (fwrite($fp, $log) === false) {
print 'ファイル書き込み失敗';
}
}
fclose($fp);
}
$data = array();
if (is_readable(FILE_NAME) === true) {
if (($fp = fopen(FILE_NAME, 'r')) !== false) {
while (($tmp = fgets($fp)) !== false) {
$data[] = htmlspecialchars($tmp, ENT_QUOTES, 'UTF-8');
}
fclose($fp);
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>一言掲示板</h1>
<form method="post">
<p>名前 :
<?php if (mb_strlen($name)){?><input type="text" name="name"> <?php } ?>
ひとこと :
<?php if (mb_strlen($comment)){?><input type="text" name="comment"><?php } ?>
<input type="submit" value="送信">
</p>
</form>
<ul>
<?php foreach ($data as $value) { ?>
<li>
<?php print $value; ?>
</li>
<?php } ?>
</ul>
</body>
</html>