2014-01-10 4 views
-1

Я получаю сообщение об ошибке Предупреждение: «Невозможно изменить информацию заголовка - уже отправленные заголовки (вывод запущен в /admin3/public/new_admin.php:7) в /admin3/includes/functions.php в строке 10 "Ошибка при перенаправлении страницы

Выход, о котором идет речь, является кодом, приведенным ниже. Я не уверен, в какой части это относится. Если 7 в конце означает строку 7, то это соответствует строке, в которой я открываю php-код. Я вызываю функции.php (вторая часть, на которую указывает ошибка) на абсолютном верхнем углу главной страницы, на которой работает этот код.

<?php require_once("../includes/session.php"); ?> 
<?php require_once("../includes/db_connection.php"); ?> 
<?php require_once("../includes/functions.php"); ?> 
<?php require_once("../includes/validation_functions.php"); ?> 
<?php error_reporting(E_ALL); ini_set('display_errors', '1'); ?> 

<?php 
if (isset($_POST['submit'])) { 
$required_fields = array("author", "body"); 
validate_presences($required_fields); 

if (empty($errors)) { 
    $author = mysql_prep($_POST['author']); 
    $body = mysql_prep($_POST['body']); 
    $page_name = ($_POST['page_name']); 

    $query = "INSERT INTO comments ("; 
    $query .= " author, body, page_name"; 
    $query .= ") VALUES ("; 
    $query .= " '{$author}', '{$body}', '{$page_name}'"; 
    $query .= ")"; 
    $result = mysqli_query($connection, $query); 

    if ($result) { 
     redirect_to("new_admin.php"); 
    } else { 
      // Failure 
      $_SESSION["message"] = "There was an error that prevented the comment from being saved."; 
    } 
} 
} else { 
    $author = ""; 
    $body = ""; 
} 
?> 

Вот функции, которые я использую в приведенном выше коде. Код «строка 10» есть функция «redirect_to»:

function mysql_prep($string) { 
    global $connection; 

    $escaped_string = mysqli_real_escape_string($connection, $string); 
    return $escaped_string; 
} 

    function redirect_to($new_location) { 
    header("Location: " . $new_location); 
    exit; 
} 

$ соединение, что я использую для моего подключения к базе данных, которую я проверил, работает

Я не уверен, как устранить это, я использовал эту функцию раньше аналогичным образом, поэтому я не знаю, есть ли глупая ошибка или что-то, что я не замечаю. Спасибо за любую помощь!

+0

возможный дубликат [Заголовки, уже отправленные PHP] (http://stackoverflow.com/questions/8028957/headers-already-sent-by-php) – Phil

+1

Если тэг ' Phil

+0

Я добавлю материал выше его на мой главный вопрос сейчас – ScarletLark

ответ

0

вы получаете эту ошибку, когда вывод уже отправлен клиенту. убедитесь, что функция header() вызывается перед отправкой любого выхода ... Которая включает любые пробелы, новые строки или любые инструкции печати или эха. Убедитесь, что вы вызываете функцию header() перед всеми вашими HTML и php выводами.

Если у вас есть несколько PHP блоков перед вашим HTML, убедитесь, что нет никакой линии между двумя ..

Как вы видите, в вашем случае, до линии 7 и 5, есть новая линия, который предоставляется как некоторый вывод, который запрещает вам изменять информацию заголовка. чтобы избавиться от этого, просто удалите новую строку:

<?php require_once("../includes/session.php"); ?> 
<?php require_once("../includes/db_connection.php"); ?> 
<?php require_once("../includes/functions.php"); ?> 
<?php require_once("../includes/validation_functions.php"); ?> 
<?php error_reporting(E_ALL); ini_set('display_errors', '1'); ?> 
<?php 
if (isset($_POST['submit'])) { 
$required_fields = array("author", "body"); 
validate_presences($required_fields); 

if (empty($errors)) { 
    $author = mysql_prep($_POST['author']); 
    $body = mysql_prep($_POST['body']); 
    $page_name = ($_POST['page_name']); 

    $query = "INSERT INTO comments ("; 
    $query .= " author, body, page_name"; 
    $query .= ") VALUES ("; 
    $query .= " '{$author}', '{$body}', '{$page_name}'"; 
    $query .= ")"; 
    $result = mysqli_query($connection, $query); 

    if ($result) { 
     redirect_to("new_admin.php"); 
    } else { 
      // Failure 
      $_SESSION["message"] = "There was an error that prevented the comment from being saved."; 
    } 
} 
} else { 
    $author = ""; 
    $body = ""; 
} 
?> 

Это должно работать ... В будущем, просто чтобы убедиться, что там нет пробелов между PHP блоков, если вы перенаправлять ...

+0

Итак, хотя это было подробно обсуждено в комментариях и выявлен дублированный вопрос, вы почувствовали, что требуется еще один ответ? – Phil

+0

извините, не читал комментарии, я просто прочитал ошибку, и когда я увидел некоторые пробелы, я бросил, чтобы ответить. –

Смежные вопросы