前提・実現したいこと
ここに質問の内容を詳しく書いてください。
phpで掲示板の作成をしています。機能は4つあります。1、名前とメッセージを送信すると、投稿番号の後に送信内容が表示され、配列化される。2、消去したい投稿番号を送信すると、該当するメッセージが消去されます。3、編集したい投稿番号を送信すると、該当する投稿番号のメッセージと名前を上書きすることができます。4、パスワード機能です。先述した2、3の機能はこのパスワードなしでは行えないようにしたいです。見た目は投稿番号を入力する欄と、パスワードを入力する欄を用意し、送信ボタンを備えたものにしたいです。
127行目にエラーが出るため、どこに問題があるのか、推測できません。
発生している問題・エラーメッセージ
エラーメッセージParse error: syntax error, unexpected end of file in /public_html/mission_3-5-1.php on line 127
該当のソースコード<?php
$filename = "mission_3-5-1.txt"; if(isset($_POST["send"])){ $array = file($filename); $array_num = count($array); $array_num++; $username = $_POST["username"]; $message = $_POST["message"]; $date = date("Y/m/d H:i:s"); $lines = $array_num."<>".$username."<>".$message."<>".$date."\n"; $fp = fopen($filename, "a"); fwrite($fp, $lines); fclose($fp); }
if(isset($_POST["del"])){ $delNo = $_POST["delNo"]; $array = file($filename); $array_num = count($array); for($i = 0; $i < $array_num ; $i++){ $array = file($filename); $array_num = count($array); $word = explode("<>", $array[$i]); if($word[0] == $delNo){ array_splice($array, $i, 1); $fp = fopen($filename, "w"); fwrite($fp, implode($array)); fclose($fp); } } }
if (isset($_POST['edit'])) { $num = htmlspecialchars($_POST['edit']); for ($k = 0; $k < count($lines) ; $k++) { // {指定番号} で始まる行の波カッコ{、}を削除 if (strpos('{'.$num.'}', $line[$k]) === 0) { $line[$k] = str_replace(['{','}'], ['',''], $line[$k]); break; } } // ファイルに書き込み file_put_contents($filename, implode('', $lines)); } foreach($lines as $post){ list($num, $name, $message, $time) = explode("<>", $post); echo h($num)."<br>\n"; echo h($username)."<br>\n"; echo h($message)."<br>\n"; echo h($time)."<br>\n"; } function h($s) { return htmlspecialchars($s, ENT_QUOTES, "UTF-8", true); }
if (isset($_POST["delete"],$_POST["delpass"])) { $delete = $_POST["delete"]; $delpass = $_POST["delpass"]; $delCon = file($filename); $fp = fopen($filename, "w"); for ($j = 0; $j < count($delCon); $j++) { $delDate = explode("<>", $delCon[$j]); if ($delDate[4] == $delpass){ if ($delDate[0] == $delete && $delDate[4] == $delpass){ // 両方一致すれば削除 fwrite($fp, "消去しました。\n"); } else { // どちらかでも一致しなければ元の行を残す fwrite($fp, $delCon[$j]); } ?>
<!DOCTYPE html> <html lang = "ja"> <head> <meta charset="UTF-8"> <title>掲示板</title> </head> <body> <h1>掲示板</h1> <form method = "POST" action = ""> 名前: <input type = "text" name = "username" required><br /> メッセージ: <input type = "text" name = "message" required><br /> <input type = "submit" name = "send" value = "send"><br /> </form> <form method = "POST" action = ""> 消去したい番号: <input type = "text" name = "delNo" required><br /> <input type = "submit" name = "del" value = "delete"><br /> </form> <form method = "POST" action = ""> 編集したい投稿番号<input type = "text" name = "ediNo" required> <br> <input type = "submit" name = "edit" value = "edit"> <br> <form method = "POST" action = ""> パスワード<input type = "text" name = "delpass" required> <br> <input type = "submit" value = "send"> <br> </form> <?php $array = file($filename); foreach($array as $component){ $element = explode("<>", $component); echo $component."<br />"; } ?> </body> </html>
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答2件
あなたの回答
tips
プレビュー