亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復 php 頁面的評論在頁面重新加載時重復發布?

如何修復 php 頁面的評論在頁面重新加載時重復發布?

MM們 2023-11-13 14:36:52
你好,我正在嘗試僅使用 php(沒有數據庫)為網站制作一個評論框,幾乎成功。但是,每次重新加載頁面時,評論都會一次又一次地重復發布。如何修復它?我的代碼在comment.php<form action="comment.php" method="post"><label for="name">Name:</label><br/><input type="text" name="yourname"><br><label for="name">Comment:</label> <br/><textarea name="comment" id="comment" cols="30" rows="10"></textarea><br/><input type="submit" value="submit"></form><?php$yourname = $_POST['yourname'];$comment = $_POST['comment'];$data = $yourname . "<br>" . $comment . "<br><br>";$myfile = fopen("comment.txt", "a"); fwrite($myfile, $data); fclose($myfile);$myfile = fopen("comment.txt", "r");echo fread($myfile,filesize("comment.txt"));?>預期輸出,當用戶輸入姓名和評論并提交時,必須發表評論。(重新加載時不應再次重復上次發布的評論)輸出正在得到,當用戶輸入名稱和評論并提交時,它會發布評論。但是,當重新加載/刷新該頁面時,它會再次發布最后一條評論。如果再次重新加載,再次發布最后的評論。每次頁面重新加載時都會重復。請幫助我修復我的代碼。這會有很大幫助。謝謝。
查看完整描述

2 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

您可以使用PRG 模式來避免多次提交。

首先檢查請求方法是否為POST。如果是這樣,請保存評論,然后重定向回來(或您想要的任何其他頁面):

<?php

$myfile = fopen('comment.txt', 'a');


if ($_SERVER['REQUEST_METHOD'] === 'POST') {

? ? $yourname = $_POST['yourname'];

? ? $comment = $_POST['comment'];

? ? $data = $yourname . "<br>" . $comment . "<br><br>";?

? ? fwrite($myfile, $data);?

? ? fclose($myfile);

? ? header('Location: comment.php');

? ? die();

}


$myfile = fopen('comment.txt', 'r');

echo fread($myfile, filesize('comment.txt'));

?>


查看完整回答
反對 回復 2023-11-13
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

第一次學習PHP。對你有好處。不過也許可以更好地花時間學習 Python。無論如何,這里發生了兩件事。


一是每次用戶點擊頁面時,無論是否發送了任何信息,php 塊都會執行。您想將 php 代碼包裝在 if 語句中,例如:


if( count($_POST) )

{

?$yourname = $_POST['yourname'];

?$comment = $_POST['comment'];

?$data = $yourname . "<br>" . $comment . "<br><br>";

?$myfile = fopen("comment.txt", "a");?

?fwrite($myfile, $data);?

?fclose($myfile);

?$myfile = fopen("comment.txt", "r");

?echo fread($myfile,filesize("comment.txt"));

}

第二個問題是,一旦您發布了某些內容,那么每次重新加載頁面(通過 F5)時,您都需要清除 POST 數組,而不是像從新會話中重新加載一樣。有很多方法可以做到這一點,我認為最適合你的是在回聲之后堅持這個:


foreach( $_POST as $key=>$val )

{

? ?unset( $_POST[$key] );

}


查看完整回答
反對 回復 2023-11-13
  • 2 回答
  • 0 關注
  • 282 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號