2 回答

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

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] );
}
- 2 回答
- 0 關注
- 282 瀏覽
添加回答
舉報