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 关注
- 221 浏览
添加回答
举报