前提・実現したいこと
よくわかるPHPの教科書【PHP対応版】のtwitter風ひとこと掲示板を作っているのですが、
49行目の<textarea cols="50" rows="5"><?php echo h($message); ?></textarea>
で投稿フォームのなかにエラーが出てしまいます。
発生している問題・エラーメッセージ
Notice: Undefined variable: message in C:\Apache24\htdocs\testsns\post\index.php on line 49
該当のソースコード
php
1 2<?php 3session_start(); 4require('dbconnect.php'); 5if (isset($_SESSION['id']) && $_SESSION['time'] + 360000 > time()) { 6 // ログインしている 7 $_SESSION['time'] = time(); 8 9 $members = $db->prepare('SELECT * FROM members WHERE id=?'); 10 $members->execute(array($_SESSION['id'])); 11 $member = $members->fetch(); 12} else { 13 header('Location: login.php'); exit(); 14} 15if (!empty($_POST)) { 16 if ($_POST['message'] != '') { 17 $message = $db->prepare('INSERT INTO posts SET member_id=?, message=?, reply_post_id=?, created=NOW()'); 18 $message->execute(array( 19 $member['id'], 20 $_POST['message'], 21 $_POST['reply_post_id'] 22 )); 23 24 header('Location: index.php'); exit(); 25 } 26} 27$posts = $db->query('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id ORDER BY p.created DESC '); 28 29if (isset($_REQUEST['res'])) { 30 $response = $db->prepare('SELECT m.name, m.picture, p.* FROM members m, posts p WHERE m.id=p.member_id AND p.id=? ORDER BY p.created DESC'); 31 $response->execute(array($_REQUEST['res'])); 32 33 $table = $response->fetch(); 34 $message = '@' . $table['name'] . ' ' . '>' . $table['message']; 35} 36 37 38function h($value) { 39 return htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); 40} 41 42 43?> 44<head> 45</head> 46<body> 47<form action="" method="post"> 48<dl> 49<dt><?php echo h($member['name']); ?>さん、メッセージをどうぞ</dt><br> 50<dd><textarea cols="50" rows="5"><?php echo h($message); ?></textarea> //エラーが発生しているのはここです 51<input type="hidden" name="reply_post_id" value="<?php echo h($_REQUEST['res']); ?>" /></dd> 52</dl> 53<input type="submit" class="button1" value="投稿する" /> 54</form> 55<?php 56foreach($posts as $post): 57?> 58<img src="member_picture/<?php echo h($post['picture']); ?>" width="48" height="48" alt="<?php echo h($post['name']); ?>" />@<?php echo h($post['name']); ?><?php echo h($post['message']); ?>[<a href="index.php?res=<?php echo h($post['id']); ?>">Re</a>] 59<a href="view.php?id=<?php echo h($post['id']); ?>"><?php echo h($post['created']); ?></a> 60<?php 61if ($post['reply_post_id']): 62?> 63<a href="view.php?id=<?php echo 64h($post['reply_post_id']); ?>"> 65返信元のメッセージ</a> 66<?php 67endif; 68?> 69<?php 70if (!empty($_SESSION['id'] && $_SESSION['id'] == ($post['member_id']) )): 71?> 72[<a href="delete.php?id=<?php echo h($post['id']); ?>" style="color: #F33;">削除</a>] 73<?php endif; ?> 74<?php endforeach; ?> 75</body> 76</html> 77
試したこと
teratailに出ていた別の質問を参考に<?php echo h($message); ?>
を<?php echo h(array($message)); ?>にしてみたがエラーがでる
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/08 05:59
2020/12/08 07:31
2020/12/08 07:38
2020/12/09 13:41
2020/12/09 15:48
2020/12/10 14:51 編集
2020/12/11 00:05
2020/12/11 17:18
2020/12/18 15:44
2020/12/21 08:54
2020/12/21 09:16