表題の件、以下内容の認識で間違えがないかご確認ください。
動画内容の前の段階での、データ処理ファイルと結果表示ファイルの認識の確認
データ処理ファイル : result.php
結果表示のファイル : index.php
以下の認識で間違えが無いようでしたら、動画に入る前の段階で、
既にデータ処理ファイルと結果表示ファイルは別ファイルになっていると感じました。
そのため、二重投稿の原因としては、
result.php 上で再読込みを行うと、POST された値が2度 message.txt に追加されるため。
データ処理ファイル( result.php )と結果表示ファイル( index.php )が別ファイルであるため、
ブラウザ上でデータ処理ファイル( result.php )が再読込みされると、
以下コードが再度実行されてしまい、二重投稿となる
【コード】
if($_SERVER['REQUEST_METHOD'] === 'POST') {
$message = trim(filter_input(INPUT_POST, 'message'));
$message = $message !== '' ? $message : 'no message';
$filename = '../app/messages.txt';
$fp = fopen($filename, 'a');
fwrite($fp, $message . "\n");
fclose($fp);
} else {
exit('Invalid Request');
}
二重投稿の解決策は、
「データ処理機能を結果表示ファイルに記述し、
header();
を用いて、データ処理機能自体を再読込みさせない」
といった認識でよろしいでしょうか。
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?