演習課題「掲示板に投稿結果を書き込む」
右の環境には、PHPで1行掲示板のプログラムが作成してありますが、投稿一覧にデータが追加されません。投稿一覧に投稿結果が以下の形式で追加されるように、プログラムを修正してください。
Article,Name
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#08:1行掲示板を作ろう - 投稿をファイルに保存する
ここでは、数回に渡って、PHPを使ったWebアプリケーションの具体例として、簡単な1行掲示板を作成します。いよいよ、投稿をファイルに保存する機能を作成してみましょう。
末尾を改行しておく。
public_html/articles.txtHello World,paiza
Hello Ruby,paiza
Hello Sinatra,paiza
世界の皆さんコンニチハ,霧島
にゃー,ネコ
public_html/bbs.php<?php
    $message = 'Hello World';
    $lines = file(__DIR__ . '/articles.txt', FILE_IGNORE_NEW_LINES);
    require_once 'views/bbs.tpl.php';
public_html/views/bbs.tpl.php<!DOCTYPE html>
<html lang='ja'>
    <?php include('header.inc.php'); ?>
    <body>
        <h1>1行掲示板</h1>
        <p><?= $message ?></p>
        <form action='result.php' method='post'>
            <label for='article'>投稿</label>
            <input type='text' name='article'>
            <p></p>
            <label for='name'>名前</label>
            <input type='text' name='name'>
            <button type='submit'>送信する</button>
        </form>
        <h2>投稿一覧</h2>
        <?php foreach ($lines as $line) { ?>
            <p><?= $line ?></p>
        <?php } ?>
        <?php include('footer.inc.php'); ?>
    </body>
</html>
public_html/result.php<?php
    $message = 'This is paiza';
    $article = htmlspecialchars($_REQUEST['article']);
    $name = htmlspecialchars($_REQUEST['name']);
    $line = $article . ',' . $name . PHP_EOL;
    file_put_contents(__DIR__ . '/articles.txt', $line, FILE_APPEND | LOCK_EX);
    require_once 'views/result.tpl.php';
cd public_html
chmod -v a+w articles.txt
public_html/views/result.tpl.php<!DOCTYPE html>
<html lang='ja'>
    <?php include('header.inc.php'); ?>
    <body>
        <h1>書き込みました</h1>
        <p><?= $message ?></p>
        <p>
            <?php
                if(isset($article)) {
                    echo $article . ', ';
                }
                if(isset($name)) {
                    echo $name;
                }
            ?>
        </p>
        <form action='bbs.php' method='get'>
            <button type='submit'>戻る</button>
        </form>
        <?php include('footer.inc.php'); ?>
    </body>
</html>
- PHP: file_put_contents - Manual
http://php.net/manual/ja/function.file-put-contents.php
- PHPでファイル書き込みを行う方法:file_put_contents() | UX MILK
http://uxmilk.jp/13027
- PHPで改行を入れるには PHP_EOLを使う(と美しい)
https://it-geek.xyz/post_734
- パーミッションなどを設定する!chmodコマンドの詳細まとめ【Linuxコマンド集】
https://eng-entrance.com/linux-command-chmod
- 【 chmod 】コマンド――ファイル/ディレクトリのパーミッション(許可属性)を変更する:Linux基本コマンドTips(14) - @IT
http://www.atmarkit.co.jp/ait/articles/1605/23/news020.html