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

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

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

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

Q&A

解決済

3回答

1705閲覧

再読み込みしたら同じ内容の文が書き込まれてしまう・日付を設定したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2018/10/08 09:21

編集2018/10/08 09:22
コード ```再読み込みしても書き込まれないようにしたいのと、書き込んだ時間を記録するようにしたいです。 <?php //var_dump($_POST); $err_msg1 = ""; $err_msg2 = ""; $message =""; $name = ( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; $comment = ( isset( $_POST["comment"] ) === true ) ? trim($_POST["comment"]) : ""; if ( isset($_POST["send"] ) === true ) { if ( $name === "" ) $err_msg1 = " "; if ( $comment === "" ) $err_msg2 = " "; if( $err_msg1 === "" && $err_msg2 ==="" ){ $fp = fopen( "data.txt" ,"a" ); fwrite( $fp , $name."\t".$comment."\n"); } } $fp = fopen("data.txt","r"); $dataArr= array(); while( $res = fgets( $fp)){ $tmp = explode("\t",$res); $arr = array( "name"=>$tmp[0], "comment"=>$tmp[1] ); $dataArr[]= $arr; } ?> このコードにどう追記すればよいのでしょうか。 私はphp初心者です…

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

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

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

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

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

guest

回答3

0

ベストアンサー

回答が出ているように、別ページを作るのがベターですが、
とりあえずなんとかしたいならば

header('Location: hogehoge.php');

を fwrite() の後ろに追記するのかな。
ちなみに hogehoge.php は質問で書かれたコードが
書かれているスクリプトになります。

投稿2018/10/08 10:42

takasima20

総合スコア7458

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

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

0

すでに回答がついていますので、私の方からはなぜ再読み込みすると書き込まれてしまうのかの説明をします。

今回のコードが書かれているファイルを仮にindex.phpとすると

まず最初にブラウザからアクセスしindex.phpが実行されます。
この時、HTTPメソッドはGETでのアクセスとなります。


次に、フォームに値を入力しsubmitすると、リクエストが投げられ再度index.phpが実行されます。
この時のHTTPメソッドはPOSTとなります。
そうすると$_POSTに入力値が入りますので、if ( isset($_POST["send"] ) === true )以下が実行されます。


次に、F5などを利用して再読み込みをすると、②と同じリクエストが再度投げらますので、②と同じ処理が実行されてしまう

という流れになってます。
通常のアプリケーションであれば、POSTリクエストを処理したあとはリダイレクト処理をして、再読み込みをしてもGETリクエストが投げられるように対処します。

投稿2018/10/08 09:46

y_ahiru

総合スコア50

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

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

0

画面を表示するためのPHPスクリプトとファイル書き込みをするためのPHPスクリプトを分離するといいです。
描画した画面で<form action="ファイル書き込み用URL">とし、
ファイル書き込みをするためのPHPスクリプトは、書き込み終了後に画面描画用のURLにリダイレクトすれば良いです。
リダイレクトはheader('location: 画面描画用URL');で出来ます。

時刻はtime()で取得できます。
整形したければdate()で出来ます。

投稿2018/10/08 09:34

kaba

総合スコア314

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問