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

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] );
}
有關更多信息,請參見此鏈接 - [提交表單后取消設置發布變量
- 2 回答
- 0 關注
- 126 瀏覽
添加回答
舉報