刷新浏览器时停止插入数据

时间:2018-12-21 07:22:06

标签: php

所有,我是PHP的新手,我正努力完成一项小任务。我有一个一页的表单,如下所示,当我填写输入字段并单击Submit时,数据将按预期插入数据库,但是,当我刷新页面时,相同的数据将再次插入数据库。我的代码在下面,您能告诉我我要去哪里了吗?

post-display.php
<?php
include "header.php";
include "access.php"?>
<?php 
    if(isset($_POST["submit"])){
        $sql = "INSERT INTO comments(post_id,name,email,contactnumber,content)VALUES ('".$_POST ["post_id"]."','".$_POST["name"]."','".$_POST["email"]."','".$_POST["number"]."','".$_POST["message"]."')";
    if (mysqli_query($con, $sql)) {
    //header("Location: index.php");

    } else {
    echo "Error: " . $sql . "" . mysqli_error($con);
    }
    }
    ?>

    <form method="post" action="#">
    <input type="hidden" name="post_id" value="
        <?php echo $id; ?>">
        <div class="col-md-12">
            <h3 class="title">Leave Your Response</h3>
            <?php  echo $id?>
        </div>
        <div class="form-group col-md-4">
            <label for="name">Name 
                <span class="required"></span>
            </label>
            <input type="text" id="name" name="name" class="form-control">
            </div>
            <div class="form-group col-md-4">
                <label for="email">Email 
                    <span class="required"></span>
                </label>
                <input type="email" id="email" name="email" class="form-control">
                </div>
                <div class="form-group col-md-4">
                    <label for="website">Contact Number</label>
                    <input type="text" id="contactnumber" name="number" class="form-control">
                    </div>
                    <div class="form-group col-md-12">
                        <label for="message">Response 
                            <span class="required"></span>
                        </label>
                        <textarea class="form-control" id="content" name="message" 
                                        placeholder="Write your response ..."></textarea>
                    </div>
                    <div class="form-group col-md-12">
                        <!--
                                        <button class="btn btn-primary" >Send Response</button>-->
                        <input type="button" value="Send Response">
                            <input type = "submit" value="Cancel" onclick="reset();">
                            </div>
                        </form>

4 个答案:

答案 0 :(得分:1)

取消对此//header("Location: index.php");的注释,您将重定向到一个新页面,这将解决您的问题

更新 有时由于某些原因header无法正常工作。然后可以使用javascript代码

if (mysqli_query($con, $sql)) {
echo '
  <script>window.location = "http://www.yoururl";</script>
';

} 

答案 1 :(得分:1)

@Alex的答案是正确的,但不完整,

取消注释后

header("Location: index.php");

您还应该使用以下命令关闭脚本执行

die();

因此,您使用header()重定向后,它将不会继续遵循您的代码

答案 2 :(得分:1)

替换:

//header("Location: index.php");

使用:

header("Refresh:0");
die();

因为我从您的代码中了解到,如果提交了表单,则用户将再次获得包含该表单的页面,并且如果用户使用了浏览器的刷新按钮,它将询问用户是否要重新提交数据。但是,如果您按照我的话做的话;该页面将作为新页面...因此,如果用户按下浏览器的刷新按钮,则不会要求他/她再次提交数据。

答案 3 :(得分:0)

您已注释掉以下行:

//header("Location: index.php");

只需取消注释,您将被带到index.php页面。