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ランキング
-
Flaskでサーバー立ち上げに関して
-
scanfでの読み込み文字数制限
-
PHP MySql 画像を取得
-
PHPからHTMLへの変数の受け...
-
POSTの項目に追加
-
phpで変数を使ってcopyできない
-
イタリア人がCatherineと聞いた...
-
VBA で、スペースを含むファイ...
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
<input type="hidden" >で配列...
-
Javascript→PHPに...
-
PHPでURLにジャンプするには?
-
フォーム送信後の更新ボタンで...
-
laravelを利用してコントロール...
-
PHPで画像の渡しが上手く行きま...
-
チェックボックスのvalueを連結...
-
POSTできない
-
選択したタグ、入力した検索文...
-
高高兴兴は高兴と何が違います...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Flaskでサーバー立ち上げに関して
-
phpで変数を使ってcopyできない
-
PHPからHTMLへの変数の受け...
-
ファイル名を変更してアップロ...
-
$_SESSIONに渡した後はそのまま...
-
openCVのトラックバーについて
-
テキストボックスの値を取得したい
-
アップロードファイル名の文字化け
-
PHP MySql 画像を取得
-
scanfでの読み込み文字数制限
-
Fortranでのファイル名操作につ...
-
ポインタ配列をfscanfで読み込...
-
WordのIDataObject::GetData呼...
-
UPDATEできない
-
C# 同じ処理をまとめたい
-
イタリア人がCatherineと聞いた...
-
POSTの項目に追加
おすすめ情報