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条经验 获得超7个赞
第一次学习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 关注
- 95 浏览
添加回答
举报