phpの勉強のために、とあるサイトの掲示板制作のコードを真似て作成しているのですが、
下記のエラーがでており解決方法がわからず困っています。
バージョンの違いの物なのかなと思いますが、どのように対処したらいいでしょうか。
PHPバージョン:7.2
■エラー内容
Notice: Undefined variable: errors in C:\xampp\htdocs\php\actions.php on line 43
【index.php】
<?php require_once('actions.php'); try{ //order by id descで、idの降順(大きい物から小さい順)に記事一覧を取得 $result = $pdo->query("select * from users order by id desc"); $count = $result->rowCount(); } catch(Exception $e) { echo $e->getMassage() . PHP_EOL; } $ptm = new PostTheMessage(); if($_SERVER['REQUEST_METHOD'] === 'POST') { $message = $_POST; $ptm->post($message); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>掲示板</title> <link rel="stylesheet" href="css/sanitize.css"> <link rel="stylesheet" href="css/styles.css"> </head> <body> <div id="header"> <h1>掲示板</h1> <p>現在の投稿<span><?= $count; ?></span>件</p> </div><!-- header --> <div id="main"> <div id="modal" class="hidden"> <form action="" method="post"> <label for="name">名前</label> <input type="text" name="name" value="" id="name"><br> <label for="password">削除用パスワード</label> <input type="password" name="password" value=""><br> <textarea name="body" rows="8" cols="40" placeholder="ここにコメントを記入してください"></textarea><br> <button type="submit" name="submit" id="submit">書き込む</button> </form> <p id="close_modal"> Close </p> </div><!-- modal --> <div id="mask" class="hidden"></div> <div id="open_modal"> <h2>投稿する</h2> </div> <div id="posts"> <?php if($count == 0): ?> <p> まだ投稿はありません。 </p> <?php endif; ?> <dl> <?php $i = 0; ?> <?php foreach ($result as $row): ?> <dt class="postrow <?php if($i > 4) { echo 'post_hidden'; } ?>"><!-- 5件以上は非表示 --> <span><?= $count - $i; ?></span><span>名前:<?= h($row["name"]) ?></span> <span><?= h($row["created"]) ?></span><br> </dt> <dd class="postrow <?php if($i > 4){ echo 'post_hidden'; } ?>"><!-- 5件以上は非表示 --> <?= nl2br(h($row["body"])) ?> <a href="delete.php?id=<?= h($row["id"]) ?>">削除</a> </dd> <?php $i++ ?> <?php endforeach; ?> </dl> <div id="load_result"></div> <button id="load_more">全件表示</button> </div><!-- posts --> </div><!-- main --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="actions.js"></script> </body> </html>
【actions.php】
<?php require_once('config.php'); function h($s){ return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); } try { $pdo = new PDO(DSN, DB_USER, DB_PASS); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(Exception $e) { echo $e->getMessage() . PHP_EOL; } class PostTheMessage{ public function post($message){ try{ // error check $validated_message = $this->_validatePost($message); // imap_save $this->_save($validated_message); // redirect header('Locaton:http://'. $_SERVER['SERVER_NAME']); exit; } catch(\Exception $e){ echo $e->getMessage() . PHP_EOL; } } private function _validatePost($post){ if(mb_strlen($post["password"]) > 7){ $post["password"] = password_hash($post["password"], PASSWORD_DEFAULT); } else { $errors[] = '8文字以上のパスワードを設定してね。'; } if(mb_strlen($post["name"]) > 15){ $errors[] = '名前が長すぎるよ'; } if(empty(trim($post["body"])) || mb_strlen($post["body"]) > 255) { $errors[] = '文章長すぎるか入力してないよ。'; } if($errors){ die(implode("<br />\n", $errors)); } return $post; } private function _save($v_message){ try{ $pdo = new PDO(DSN, DB_USER, DB_PASS); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if(empty($v_message['name'])){ $stmt = $pdo->prepare("insert into users(body, password) values(?, ?)"); $stmt->execute([$v_message["body"], $v_message["password"]]); } else { $stmt = $pdo->prepare("insert into users(name, body, password) values(?, ?, ?)"); $stmt->execute([$v_message["name"], $v_message["body"], $v_message["password"]]); } } catch(Exception $e){ echo $e->getMessage() . PHP_EOL; exit; } } }
回答1件
あなたの回答
tips
プレビュー