php fopen功能不断向我发送我重新加载网页时已发布的表单的重复版本[duplicate]

fcg9iug3  于 2023-01-01  发布在  PHP
关注(0)|答案(1)|浏览(82)
    • 此问题在此处已有答案**:

(21个答案)
3天前关闭。
这里是html/php

<html>

<form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
Enter message<br> <textarea rows="4" cols="40" name="form"></textarea><br>
<input type="submit">
</form>

<?php
$formvalue = $_POST["form"];
if ($formvalue == TRUE) {
$file = fopen("logindetails", "a");
fwrite($file, PHP_EOL);
fwrite($file, $formvalue);
fclose($file);                     
}
else {
    die();
}
?>

</html>

现在,每当我重新加载页面时,以前提交的值或新的换行符就会出现。如何解决这个问题
请帮帮忙
我期望网页中的表单值被提交并显示在服务器上的文件中,并且每次提交表单时都要更新文件,但是它会在页面刷新时将以前发送的值重复到文件中,或者如果我没有在表单中填写任何内容,则会在添加
我的表单的属性

gjmwrych

gjmwrych1#

为了避免你的POST或GET被再次发送,你可以在你的脚本中检查并处理它们,然后将你的脚本重定向到相同的页面。一旦重定向,如果你刷新页面,它将被发送到任何POST或GET请求。
代码示例的可能更新:

<?php
    if(isset($_POST["form"])) {
    $formvalue = $_POST["form"];
    if ($formvalue == TRUE) {
        $file = fopen("logindetails", "a");
        fwrite($file, $formvalue);
        fwrite($file, PHP_EOL);
        fclose($file);  
        header('Location: ' .  $_SERVER['SCRIPT_NAME']);// calls again your page before printing anything
    }
}
?>
<html>
    <body>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"] ?>">
        Enter message<br> <textarea rows="4" cols="40" name="form"></textarea><br>
        <input type="submit">
        </form>
    </body>
</html>

相关问题