掲示板1(シンプル) - PHPでファイルの読み書き・掲示板
目次
- PHPでファイルの読み書き・掲示板
- ファイルの読み込み
- ファイルの書き込み
- ファイルの読み書き(ゲストブック)
- 設定ファイルの読み書き
- CSVファイルの読み込み
- テキストエディタの作成
- アンケートシステムの作成
- 掲示板1(シンプル)
掲示板1
シンプルな機能の掲示板を作成します。
プログラムの作成
以下のソースを入力してください。
<?php
function h($str) {
return htmlspecialchars($str, ENT_QUOTES);
}
$rows = json_decode(file_get_contents('bbs1.json'), true);
if (!empty($_POST['write'])) {
$row = array(
'name' => $_POST['name'],
'title' => $_POST['title'],
'contents' => $_POST['contents'],
'time' => date("Y/m/d H:i:s")
);
array_unshift($rows, $row);
file_put_contents('bbs1.json', json_encode($rows));
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>掲示板1</title>
</head>
<body>
<form method="post">
お名前: <input name="name"><br>
題名: <input name="title"><br>
<textarea name="contents" cols="60" rows="5"></textarea><br>
<input type="submit" name="write" value="送信">
</form>
<hr>
<?php foreach($rows as $row): ?>
<strong><?php echo h($row['title']) ?></strong>
<br><small>投稿者:<?php echo h($row['name']) . ' ' . h($row['time']) ?></small>
<p><?php echo nl2br(h($row['contents']), false) ?></p>
<hr>
<?php endforeach ?>
</body>
</html>
入力が終わったら「bbs1.php」というファイル名でウェブサーバーにアップロードします。
データファイルの作成
書き込んだ内容が入るデータファイルを作成します。
[]
とだけ入力して「bbs1.json」というファイル名でPHPファイルと同じ場所にアップロードしてください。必要ならば書き込み許可属性を与えてください。
ソースの解説
$rows = json_decode(file_get_contents('bbs1.json'), true);
JSON形式で格納されているデータファイルの内容をデコードします。
if (!empty($_POST['write'])) {
書き込みボタンが押されたらsubmitボタンのname属性により、POST変数writeに値が入るので、以下の書き込み処理を行ないます。
$row = array(
'name' => $_POST['name'],
'title' => $_POST['title'],
'contents' => $_POST['contents'],
'time' => date("Y/m/d H:i:s")
);
フォームから入力された名前・題名・本文と、投稿日時を配列に格納します。
array_unshift($rows, $row);
データファイルの内容が入っている変数$rowsの先頭に、投稿した内容を格納します。
file_put_contents('bbs1.json', json_encode($rows));
投稿した内容を付け加えた$rowsをJSONに戻し、ファイルbbs1.jsonに書き戻しています。
<?php foreach($rows as $row): ?>
<strong><?php echo h($row['title']) ?></strong>
<br><small>投稿者:<?php echo h($row['name']) . ' ' . h($row['time']) ?></small>
<p><?php echo nl2br(h($row['contents']), false) ?></p>
<hr>
<?php endforeach ?>
データファイルの内容を、一行づつ整形して画面に出力します。