前提・実現したいこと
以下の要件を満たすように作成したいです。
利用者の名前は最大20文字以内まで発言できる。もし20文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
利用者のコメントは最大100文字以内まで発言できる。もし100文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
利用者の名前とコメントは必ず文字が入力される。もし名前あるいはコメントが未入力で発言した場合はエラーメッセージを表示し、発言できないようにする。
初心者です。この要件を満たすやりかたがいまいちわかりません。
いろいろ試してはいるのですが文がおかしいのか作動しません。。
該当のソースコード
<?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((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>名前 : <input type="text" name="name"> ひとこと : <input type="text" name="comment"> <input type="submit" value="送信"> </p> </form> <ul> <?php foreach ($data as $value) { ?> <li> <?php print$value; ?> </li> <?php } ?> </ul> </body> </html>
回答2件
あなたの回答
tips
プレビュー