PHPで一言掲示板を作成しています。
以下が要件になります。
1,利用者が名前とコメントを入力し、発言できる。
2,利用者の過去の発言内容をテキストファイルで管理する。
全ての利用者の過去の発言内容を一覧で表示する。一覧には「名前」「コメント」「発言日時」の3つを1行ずつ表示する。
3,利用者の名前は最大20文字以内まで発言できる。もし20文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
4,利用者のコメントは最大100文字以内まで発言できる。もし100文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
5,利用者の名前とコメントは必ず文字が入力される。もし名前あるいはコメントが未入力で発言した場合はエラーメッセージを表示し、発言できないようにする。
以下のエラーが表示されます。
Notice:Undefined variable:name in~ line58 (<?php if (mb_strlen($name)){?><input type="text" name="name"> <?php } ?>の箇所です)
Notice:Undefined variable comment in~line60(<?php if (mb_strlen($comment)){?><input type="text" name="comment"><?php } ?>の箇所です)
Notice:Undefined variable data in~line65(<?php foreach ($data as $value) { ?>の箇所です)
Warning:Invalid argument supplied for foreach()in~line65
<?php $filename = './review.txt'; $date = date("Y-m-d H:i:s"); $log = ''; $name_max = 20; $comment_max = 100; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = $_POST['name']; // $comment = $_POST['comment']; // $log = $name . ':' . $comment . '-' . $date . "\n"; if (($fp = fopen($filename, 'a')) !== false) { if ((mb_strlen($name) <= $name_max) && (mb_strlen($name) !== 0)){ print '名前は20文字以内で書いてください'; if (fwrite($fp, $name) === false) { print 'ファイル書き込み失敗'; } } fclose($fp); } // $name = $_POST['name']; $comment = $_POST['comment']; $log = $name . ':' . $comment . '-' . $date . "\n"; if (($fp = fopen($filename, '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($filename) === true) { if (($fp = fopen($filename, '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>PHP
1コード
回答1件
あなたの回答
tips
プレビュー