所有,我是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>
答案 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页面。