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

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

ただいまの
回答率

90.37%

  • PHP

    22512questions

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

一言掲示板作成中でのことです

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 527

newyee

score 133

現在一言掲示板作成途中なのですが、名前とひとことを打って送信しても、ログのテキストファイルにも保存されず画面に表示もできていない状態です。
誰か分かる方いらっしゃいましたら、教えて下さい...

<?php 
const FILE_NAME = './bbs.txt';
date_default_timezone_set('Asia/Tokyo');
$date = date("Y-m-d H:i:s");
$log = '';
if($_SERVER['REQUEST_METHOD'] === 'POST'){
    $user_name = $_POST['user_name'];
    $user_commnet = $_POST['user_comment'];
    $log = $user_name . ':' . $user_comment . '-' . $date;
    if(($fp = fopen(FILE_NAME,'a')) !== FALSE){
        if(fwrite($fp,$log) === FALSE){
            echo 'ファイル書き込み失敗';
        }
        fclose($fp);
    }
}    

$data = array();
if(is_readable(FILE_NAME) === TRUE){
    if(($fp = fopen(FILE_NAME,'r')) !== FALSE){
        while(($tmp = fgets($fp)) !== FALSE){
            $data[] =  $tmp;
        }
        fclose($fp);
    }
}



?>


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>一言掲示板</h1>
    <form action="bbs.txt" method="post">
        <p>名前 :
        <input type="text" name="user_name">
        ひとこと :
        <input type="text" name="user_comment">
        <input type="submit" value="送信">
        </p>
    </form>
    <ul>
        <?php foreach($data as $value){ ?>
            <li><?php echo htmlspecialchars($value,ENT_QUOTES,'UTF-8'); ?></li>
        <?php } ?>    
    </ul>    
</body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • s8_chu

    2017/07/08 16:12

    bbs.txtの内容を追記していただけませんか?

    キャンセル

回答 1

checkベストアンサー

+3

以下のようにしてはいかがでしょうか?

<?php
const FILE_NAME = './bbs.txt';
date_default_timezone_set('Asia/Tokyo');
$date = date("Y-m-d H:i:s");
$log = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $user_name = $_POST['user_name'];
    $user_comment = $_POST['user_comment'];// $user_commnetを$user_commentに変更
    $log = $user_name . ':' . $user_comment . '-' . $date . "\n";
    if (($fp = fopen(FILE_NAME, 'a')) !== false) {
        if (fwrite($fp, $log) === false) {
            echo 'ファイル書き込み失敗';
        }
        fclose($fp);
    }
}

$data = array();
if (is_readable(FILE_NAME) === true) {
    if (($fp = fopen(FILE_NAME, 'r')) !== false) {
        while (($tmp = fgets($fp)) !== false) {
            $data[] = $tmp;
        }
        fclose($fp);
    }
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>一言掲示板</h1>
<form action="" method="post"><!-- action属性の値を削除 -->
    <p>名前 :
        <input type="text" name="user_name">
        ひとこと :
        <input type="text" name="user_comment">
        <input type="submit" value="送信">
    </p>
</form>
<ul>
    <?php foreach ($data as $value) { ?>
        <li>
            <?php echo htmlspecialchars($value, ENT_QUOTES, 'UTF-8'); ?>
        </li>
    <?php } ?>
</ul>
</body>
</html>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/08 18:41

    ご回答ありがとうございます。bbs.txtの内容に関しましては、ご回答いただいた通りに修正した後も前も空の状態です。ですが、画面に表示することには成功致しました。ですので現状ログだけが取れていないと状態であります。

    キャンセル

  • 2017/07/08 18:43 編集

    > 現状ログだけが取れていない
    回答文のコードを修正したので、一度試してみていただけませんか?

    キャンセル

  • 2017/07/08 19:07

    すみません。ご回答いただいた通り試してみましたところ、画面にも出力され、ログを取ることにも成功致しました。
    formタグの中でaction属性を指定していないにも関わらず、何故bbs.txtにログを取ることができたのでしょうか...?

    キャンセル

  • 2017/07/08 19:13

    action属性を空にするとそのform要素が置かれたページが送信先になるからです。

    キャンセル

  • 2017/07/08 19:26

    form要素が置かれたページが送信先となるということなんですが、置かれたページにPOSTされた値が送られ、ファイル操作の処理でbbs.txtに書き込まれるといった理解で大丈夫でしょうか...?
    最初action属性でbbs.txtとしていしなければ、そこに書き込まれないといった勘違いをしていたのですが、POSTされる値をそこに送るというのはおかしいですよね...
    でもなんとか理解することができて助かりました。ありがとうございました。

    キャンセル

  • 2017/07/08 19:31

    > 置かれたページにPOSTされた値が送られ、ファイル操作の処理でbbs.txtに書き込まれるといった理解で大丈夫でしょうか...?
    その認識で間違いないと思います。

    キャンセル

同じタグがついた質問を見る

  • PHP

    22512questions

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