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

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

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

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

PHP
慕村225694 2022-12-11 10:41:46
我正在嘗試為僅使用 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 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

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

首先,檢查請求方法是否為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'));

?>


查看完整回答
反對 回復 2022-12-11
?
慕仙森

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

第一次學習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] );

}

有關更多信息,請參見此鏈接 - [提交表單后取消設置發布變量


查看完整回答
反對 回復 2022-12-11
  • 2 回答
  • 0 關注
  • 126 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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