Ошибка в коде для перенаправления заголовка - PullRequest
1 голос
/ 15 октября 2011

У меня есть файл 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();
}
?>

Я получаюэта ошибка:

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home/animalsw/public_html/addcomment.php:1) в / home / animalsw / public_html / addcomment.php в строке 22 * ​​1007 *

, а также как проверить, правильно ли работал запрос.

Ответы [ 2 ]

3 голосов
/ 15 октября 2011

Удалите эти пробелы до <?php, и это сработает (при условии, что у вас нет вывода во включенных файлах)

, а также как проверить, правильно ли работал запрос.

Вы уже это проверили. Если запрос не выполнен, он вызовет or die('error query');

0 голосов
/ 15 октября 2011

Чтобы добавить к сказанному генезисом, убедитесь, что require_once ("appvars.php");require_once ("connectvars.php") не отображает никаких данных.Как только вы начнете что-то выводить, вы получите эту ошибку, потому что вы будете отправлять заголовки, когда вы уже выводите тело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...