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);
}
?>
No.1ベストアンサー
- 回答日時:
前回分と今回分を比較照合する為にFORMの隠し項目として退避
するのはどうでしょうか。
function writeData(){ //--------ここで同じ書き込みデータがあればreturnしたい。-------
'比較項目が共にGETパラーメーターとして取得できたら
'比較照合する。
if (isset($_GET['personal_name']) && $_GET['personal_name'] != null) {
if (isset($_GET['hidden_name']) && $_GET['hidden_name'] != null) {
$personal_name = $_GET['personal_name'];
$hidden_name = $_GET['hidden_name'];
if ($personal_name == $hidden_name) {
return;
}
}
}
//以降省略
}
<html>
<head>
<title></title>
</head>
<body>
<form>
<input type="hidden" name="personal_name" value=<?= $_GET['personal_name'] ?>>
<input type="hidden" name="hidden_name" value=<?= $_GET['personal_name'] ?>>
<input type="submit" name="BTN_OK" value="投稿">
</form>
</body>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダ内の全てのテキス...
-
PHP MySql 画像を取得
-
Flaskでサーバー立ち上げに関して
-
マクロ(VBA)について
-
(Excel)VBA ファイルパスからフ...
-
openCVのトラックバーについて
-
テキストボックスの値を取得したい
-
セッションを使わずに遷移先画...
-
<input type="hidden" >で配列...
-
フォームで作った送信ボタンが...
-
DBの値をチェックボックスに反...
-
ボタンをクリックでPHP文を実行
-
laravelを利用してコントロール...
-
送信ボタンでカウントアップ
-
PHP ボタンが押されたら処理を...
-
チェックボックスを使った複数...
-
PHPで画像の渡しが上手く行きま...
-
チェックボックスによる検索
-
【PHPチェック】ラジオボタンが...
-
カスタムフィールドテンプレー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
ファイル名を変更してアップロ...
-
アップロードファイル名の文字化け
-
PHPからHTMLへの変数の受け...
-
プログラミングC++のmapについて
-
phpで変数を使ってcopyできない
-
Flaskでサーバー立ち上げに関して
-
SQLインジェンクション対策法を...
-
POSTの項目に追加
-
パラメータを2個つけたい
-
サブフォルダ内の全てのテキス...
-
フォームで送られてきたメール...
-
PHP FTPサーバへの画像アップロ...
-
連想配列を複数条件で比較して...
-
name属性が全角の場合・・・
-
if function PHP
-
マクロ(VBA)について
-
PDOのprepareでLIKEの部分一致...
-
画像をDBに登録できない
-
テキストボックスの値を取得したい
おすすめ情報