※ ChatGPTを利用し、要約された質問です(原文:PHPで掲示板)
PHPで掲示板を作成する方法
このQ&Aのポイント
PHPを使用して、名前とコメントを入力できる掲示板を作成する方法について説明します。
利用者の発言内容をテキストファイルで管理し、一覧で表示する機能も実装します。
また、利用者の名前やコメントの文字数制限、エラーメッセージの表示など、入力値のバリデーションも行います。
PHPでひとこと掲示板を以下の要件を満たすように作成しています。
・利用者が名前とコメントを入力し、発言できる。
・利用者の過去の発言内容をテキストファイルで管理する。
・全ての利用者の過去の発言内容を一覧で表示する。一覧には「名前」「コメント」「発言日時」の3つを1行ずつ表示する。
・利用者の名前は最大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 (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>