質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1402閲覧

PHPで一言掲示板を作成

turtle410

総合スコア13

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/01/02 09:09

PHPでひとこと掲示板を以下の要件を満たすように作成しています。

・利用者が名前とコメントを入力し、発言できる。
・利用者の過去の発言内容をテキストファイルで管理する。
・全ての利用者の過去の発言内容を一覧で表示する。一覧には「名前」「コメント」「発言日時」の3つを1行ずつ表示する。
・利用者の名前は最大20文字以内まで発言できる。もし20文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
・利用者のコメントは最大100文字以内まで発言できる。もし100文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。
・利用者の名前とコメントは必ず文字が入力される。もし名前あるいはコメントが未入力で発言した場合はエラーメッセージを表示し、発言できないようにする。
・(ソースコード)比較演算子は、「===」や「!==」を利用する。

『(!) Parse error: syntax error, unexpected end of file in /home/ec2-user/environment/htdocs/php/php/13/bbs.php on line 73』というエラーメッセージが表示されます。最後の</html>が72行目になります。
初心者なので色々調べながら作成しましたが、以下のコードでおかしいところのご指摘をお願いします。また、よろしければ皆さんのプログラミングのオススメ学習法を教えていただけると幸いです。よろしくお願い致します。

<?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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/01/02 09:19

コードはマークダウンのcode機能にてご提示ください。
m.ts10806

2021/01/02 09:20

あと、下記は本件とは離れますし、自身で過去質問など見られたほうが良いです。外してください。 >また、よろしければ皆さんのプログラミングのオススメ学習法を教えていただけると幸いです。よろしくお願い致します。
guest

回答2

0

ベストアンサー

ぱっと見ですが、ifの閉じかっこ「}」が2つ不足してるようです。

投稿2021/01/02 14:26

hiok

総合スコア595

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

turtle410

2021/01/03 10:13

if ($_SERVER['REQUEST_METHOD'] === 'POST') { の箇所でしょうか? (fclose($fp);の前に「}」を入れる)
hiok

2021/01/03 11:32

正確な場所については、処理フロー次第なのですが、たぶん、fcloseの後では無いですかね。
guest

0

PHP

1コード 2```<?php 3const FILE_NAME = './bbs.txt'; 4$date = date("Y-m-d H:i:s"); 5$log = ''; 6 7if ($_SERVER['REQUEST_METHOD'] === 'POST') { 8$name = $_POST['name']; 9// $comment = $_POST['comment']; 10// $log = $name . ':' . $comment . '-' . $date . "\n"; 11if (($fp = fopen(FILE_NAME, 'a')) !== false) { 12if ((mb_strlen($name) <= $name_max) && (mb_strlen($name) !== 0)){ 13print '名前は20文字以内で書いてください'; 14if (fwrite($fp, $name) === false) { 15print 'ファイル書き込み失敗'; 16} 17} 18fclose($fp); 19} 20 21if ($_SERVER['REQUEST_METHOD'] === 'POST') { 22// $name = $_POST['name']; 23$comment = $_POST['comment']; 24$log = $name . ':' . $comment . '-' . $date . "\n"; 25if (($fp = fopen(FILE_NAME, 'a')) !== false) { 26 27if ((mb_strlen($comment) <= $comment_max) && (mb_strlen($comment) !== 0)){ 28print 'ひとことは100文字以内で書いてください'; 29if (fwrite($fp, $log) === false) { 30print 'ファイル書き込み失敗'; 31} 32} 33fclose($fp); 34} 35 36$data = array(); 37if (is_readable(FILE_NAME) === true) { 38if (($fp = fopen(FILE_NAME, 'r')) !== false) { 39while (($tmp = fgets($fp)) !== false) { 40$data[] = htmlspecialchars($tmp, ENT_QUOTES, 'UTF-8'); 41} 42fclose($fp); 43} 44} 45?> 46 47<!DOCTYPE html> 48<html lang="ja"> 49<head> 50<meta charset="UTF-8"> 51<title></title> 52</head> 53<body> 54<h1>一言掲示板</h1> 55<form method="post"> 56 57<p>名前 : 58<?php if (mb_strlen($name)){?><input type="text" name="name"> <?php } ?> 59ひとこと : 60<?php if (mb_strlen($comment)){?><input type="text" name="comment"><?php } ?> 61<input type="submit" value="送信"> 62</p> 63 64</form> 65<ul> 66<?php foreach ($data as $value) { ?> 67<li> 68<?php print $value; ?> 69</li> 70<?php } ?> 71</ul> 72</body> 73</html>

投稿2021/01/02 09:40

turtle410

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問