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

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

ただいまの
回答率

90.35%

  • PHP

    25489questions

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

phpで、作った掲示板をリロード時、headerを利用して、違うファイルに飛ばす

解決済

回答 1

投稿

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

tidavest

score -113

<?php 

$dataFile = 'bbs.dat';

//CSRF対策
session_start();

function setToken() {
    $token = sha1(uniqid(mt_rand(), true));
        $_SESSION['token'] = $token;    
}

function checkToken() {
    if (empty($_SESSION['token']) || ($_SESSION['token'] != $_POST['token'])) {
        echo "不正な処理が行われました";
        exit;
    }
}

function h($s) {
    return htmlspecialchars($s, ENT_QUOTES, 'UTF-8');
}

if ($_SERVER['REQUEST_METHOD'] = 'POST' &&
    isset($_POST['message']) &&
    isset($_POST['user'])) {
    $message = $_POST['message'];
    $user = $_POST['user'];
}
    if ($message != '') {
        $user = ($user == '') ? 'ななしさん' : $user;
        $postedAt = date('Y-m-d H:i:s');
    //    $postedAt = date('Y-m-d H:i:s');
        $message = str_replace( "\t",' ',$message);
        $user = str_replace( "\t",' ',$user);

        $newData = $message . "\t" . $user . "\t" . $postedAt. "\n";
        $fp = fopen($dataFile, 'a');
        fwrite($fp, $newData);
        fclose($fp);
}


$posts = file($dataFile, FILE_IGNORE_NEW_LINES);
$posts = array_reverse($posts);
?>
<form action="" method="post">
                                <dl>
                                    <dd style="margin-bottom:5px"><B>User名</B></dd><textarea name="user" cols="10" rows="1"></textarea>
                                    <dd>
                                    <dt>○発言どうぞ</dt>
                                    <textarea name="message" cols="50" rows="5"></textarea>
                                    </dd>
                                </dl>
                                    <div>    
                                <input type="submit" value="投稿する" />
                                <input type="hidden" name="token" value="<?php echo h($_SESSION['token']);?>">
                                    </div>
                                <h3>投稿一覧 (<?php echo count($posts); ?>件) </h3>

                                <ul>
                                    <?php if (count($posts)) : ?> 
                                    <?php foreach ($posts as $post) : ?>    

                                        <?php list($message, $user, $postedAt) = explode("\t", $post); ?>    
                                            <li><?php echo h($user); ?> <?php echo h($message); ?> <?php echo h($postedAt); ?></li>

                                    <?php endforeach; ?>                                
                                    <?php else : ?>
                                        <li>まだ投稿がありません。</li>
                                    <?php endif; ?>
                                </ul>        


                        </div>

上記コードで、F5でHP更新時、前の投稿が掲示板に、そのまま現れます。
下記URLを参考に
http://www.phppro.jp/qa/262#1689
headerを利用し、この問題を解決したいのですが、

header("Location:end.html");
exit();


をどこのコードに入れれば、宜しいでしょうか。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • m.ts10806

    2018/02/17 16:10

    何が分かっていて何が分かっていなくて、自身で何をやってみたか追記してください。https://teratail.com/help/question-tips というより、解決しないまま次々と質問をたてるのは迷惑行為とみなされるケースもあるのでご注意を。

    キャンセル

  • asahina1979

    2018/02/17 16:22

    迷惑行為でしょ、これの答えが「phpで作った掲示板が、f5で更新すると、再度書き込まれる」の対処法だから

    キャンセル

  • m.ts10806

    2018/02/17 19:17

    まあ、だから自然と回答がつかなくなっていくんでしょうけどね。。。

    キャンセル

  • 退会済みユーザー

    2018/03/21 16:52

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 1

check解決した方法

-1

年月が開いたため、閉じます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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

  • PHP

    25489questions

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