Php 标头重定向的代码中存在错误

Php 标头重定向的代码中存在错误,php,mysql,http-post,post-redirect-get,Php,Mysql,Http Post,Post Redirect Get,我有一个template.php文件,它包含在每个页面中,所以现在我想在每个页面中添加评论表单,我已经将表单添加到template.php中,唯一的问题是刷新会导致数据库中出现重复条目。所以经过一些研究,我找到了POST REDIRECT GET方法,因此,在template.php中,我将表单操作放在addcomment.php中,在addcomment.php中,我使用了以下代码: <?php require_once("appvars.php"); require_once(

我有一个template.php文件,它包含在每个页面中,所以现在我想在每个页面中添加评论表单,我已经将表单添加到template.php中,唯一的问题是刷新会导致数据库中出现重复条目。所以经过一些研究,我找到了POST REDIRECT GET方法,因此,在template.php中,我将表单操作放在addcomment.php中,在addcomment.php中,我使用了以下代码:

    <?php
require_once("appvars.php");
require_once("connectvars.php");
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc() === 1){
  $_POST = array_map( 'stripslashes', $_POST );
  $_GET = array_map( 'stripslashes', $_GET );
  $_COOKIE = array_map( 'stripslashes', $_COOKIE );
}
if (isset($_POST['commentsubmit']))
{
$type=mysqli_real_escape_string($dbc,trim($_POST['type']));
$name=mysqli_real_escape_string($dbc,trim($_POST['username']));
$email=mysqli_real_escape_string($dbc,trim($_POST['useremail']));
$subject=mysqli_real_escape_string($dbc,trim($_POST['subject']));
$comment=mysqli_real_escape_string($dbc,trim($_POST['usercomment']));
$link=mysqli_real_escape_string($dbc,trim($_POST['link']));
$query = "INSERT INTO comments (`type`,`name`,`email`,`subject`,`comment`,`date`,`link`) VALUES         ('$type','$name','$email','$subject','$comment',NOW(),'$link')";
$result=mysqli_query($dbc, $query) or die('error query'); 


 header("Location: $link", 302);
   exit();
}
?>

之前删除这些空格要添加genesis所说的内容,请确保require_once(“appvars.php”);

require_once(“connectvars.php”)不回显任何数据。一旦您开始输出某些内容,就会出现该错误,因为您将在已经输出正文的情况下发送标题

@user995426:若你们想让用户知道评论已经发布,你们不应该重定向用户。为什么,我使用dis方法,这样表单在刷新时就不会被重新提交,我认为通过使用GET,有一种方法可以让用户没有评论被成功发布。除了如何告诉用户评论是否已提交之外,一切都正常。可能是重复的