2014-01-10 57 views
-1

我收到錯誤警告:「無法修改/admin3/includes/functions.php中的頭信息 - (輸出開始於/admin3/public/new_admin.php:7)已發送的頭信息在線10「重定向頁面時出錯

它指的是直接輸出的代碼。我不確定它指的是什麼部分。如果最後7表示第7行,那麼匹配我打開php代碼的行。我在這個代碼所在的主頁的絕對頂部調用functions.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

如果你的'<?php'標籤位於'new_admin的第7行。 php',那麼之前是什麼呢? – Phil

+0

我會在它上面的東西中加入我現在的主要問題 – ScarletLark

回答

0

當輸出已經發送到客戶端時,您會收到該錯誤。確保在發送任何輸出之前調用header()函數......其中包括任何空格,新行或任何打印或回顯語句。確保你在所有的HTML和PHP輸出之前調用header()函數。

如果你有你的HTML之前多個PHP塊中,確保有兩者之間沒有行..

正如你看到的,你的情況,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

對不起,沒有閱讀評論,我只是閱讀錯誤,當我看到一些空白我想破解。 –