※ ChatGPTを利用し、要約された質問です(原文:PHPのリロード時の処理)
PHPのリロード時の処理
このQ&Aのポイント
PHPプログラム初心者です。掲示板のプログラムを作成しております。リロード時に自動で投稿ボタンが押されてしまう問題が発生しています。
リロード時の投稿ボタン自動押下の問題を解決するためには、writeDate()内で条件を設ける方法があります。
具体的な方法として、$_GET['personal_name']のデータを変数に保持し、次回リロードされた際に同じデータが返ってきた場合はwriteDate()内の処理をスキップすることです。
PHPのリロード時の処理
PHPプログラム初心者です。
掲示板のプログラムを作成しております。
以下のコードで、リロード時、自動で投稿ボタンが押されてsubmitしてしまいます。
自分で考えた解決策としては、下記のwriteDate()内で、条件を入れることです。
$_GET['personal_name'];のデータを変数に保持し、次にリロードされた時同じものが返ってきら、writeDate()内の処理をしないという方法です。
このときの変数の保存の仕方が解りません。
ご存じの方がおられましたら教えてください。
<?php
if($_SERVER["REQUEST_METHOD"]=="GET"){
writeData();
}
readData();
function readData(){
$keijban_file='keijiban.txt';
$fp=fopen($keijban_file,'rb');
if($fp){
if(flock($fp,LOCK_SH)){
while(!feof($fp)){
$buffer=fgets($fp);
print($buffer);
}
flock($fp,LOCK_UN);
}else{
print('ファイルロックに失敗しました');
}
}
fclose($fp);
}
function writeData(){ //--------ここで同じ書き込みデータがあればreturnしたい。-------
$t=$_GET['personal_name'];
$personal_name=$_GET['personal_name'];
$contents=$_GET['contents'];
$contents=nl2br($contents);
$data="<hr>\r\n";
$data=$data."<p>[投稿者:".$personal_name."]</p>";
$data=$data."[内容]";
$data=$data."<p>".$contents."</p>";
$keijban_file='keijiban.txt';
$fp=fopen($keijban_file,'ab');
if($fp){
if(flock($fp,LOCK_EX)){
if(fwrite($fp,$data)===FALSE){
print('ファイル書き込みに失敗しました');
}
flock($fp,LOCK_UN);
}else{
print('ファイルロックに失敗しました');
}
}
$data=null;
fclose($fp);
}
?>
お礼
ありがとうございます。 実装できましてた。