第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何修復(fù)來自 php 頁(yè)面的評(píng)論在頁(yè)面重新加載時(shí)重復(fù)發(fā)布?

如何修復(fù)來自 php 頁(yè)面的評(píng)論在頁(yè)面重新加載時(shí)重復(fù)發(fā)布?

PHP
慕村225694 2022-12-11 10:41:46
我正在嘗試為僅使用 php(無數(shù)據(jù)庫(kù))的網(wǎng)站制作評(píng)論框,幾乎成功了。但是,每次重新加載頁(yè)面時(shí),評(píng)論都會(huì)一次又一次地重復(fù)發(fā)布。如何解決?我的代碼在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"));?>預(yù)期輸出,當(dāng)用戶輸入姓名和評(píng)論并提交時(shí),它必須發(fā)表評(píng)論。(雖然重新加載它不應(yīng)該再次重復(fù)最后發(fā)表的評(píng)論)輸出越來越,當(dāng)用戶輸入姓名和評(píng)論并提交時(shí),它會(huì)發(fā)布評(píng)論。但是,當(dāng)重新加載/刷新該頁(yè)面時(shí),它會(huì)再次發(fā)布最后一條評(píng)論。如果再次重新加載,再次發(fā)布最后的評(píng)論。每次重新加載頁(yè)面時(shí)都會(huì)重復(fù)。請(qǐng)幫我修復(fù)我的代碼。這會(huì)很有幫助。謝謝你。
查看完整描述

2 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

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

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

<?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'));

?>


查看完整回答
反對(duì) 回復(fù) 2022-12-11
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

第一次學(xué)習(xí)PHP。對(duì)你有益。盡管也許可以更好地花時(shí)間學(xué)習(xí) Python。無論如何,這里發(fā)生了兩件事。


一個(gè)是每次用戶點(diǎn)擊頁(yè)面時(shí),無論是否發(fā)送了任何信息,php 塊都會(huì)執(zhí)行。你想將你的 php 代碼包裝在一個(gè) if 語(yǔ)句中,例如:


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"));

}

你的第二個(gè)問題是,一旦你發(fā)布了一些東西,那么每次你重新加載頁(yè)面(通過 F5)而不是從新會(huì)話重新加載時(shí),你需要清除 POST 數(shù)組。有很多方法可以做到這一點(diǎn),我認(rèn)為最適合你的是在回聲之后堅(jiān)持下去:


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

{

   unset( $_POST[$key] );

}

有關(guān)更多信息,請(qǐng)參見此鏈接 - [提交表單后取消設(shè)置發(fā)布變量


查看完整回答
反對(duì) 回復(fù) 2022-12-11
  • 2 回答
  • 0 關(guān)注
  • 131 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)