2016-04-22 29 views
1

我知道這個問題已被問了很多次,但我看到了很多不同的答案,並嘗試過所有的都沒有爲我工作。因此,讓我爲您提供具體的上下文,並看看您的建議:無法修改頭信息頭已發送

我正在開發Mac OS X El Capitan。我正在使用PHP版本5.5.31。 error message

我在我的php.ini文件中打開了輸出緩衝。在發送標題之前,我已經強調檢查了沒有空白空間。下面是代碼指的是行:

(edit_subject.php:6)

<?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 find_selected_page();?> 
<?php 
if(!$current_subject){ 
**redirect_to("manage_content.php")**; 
} 
?> 

(edit_subject.php:38)

$result = mysqli_query($connection, $query); 
if ($result && mysqli_affected_rows($connection) >= 0) { 
// Success 
$_SESSION["message"] = "Subject edited succesfully."; 
**redirect_to("Location: manage_content.php");** 
} else { 
// Failure 
$message = "Subject update failed."; 
} 

(functions.php的:3)

<?php 
function redirect_to($new_location) { 
redirect_to("Location: . $new_location"); 
exit; 
?> 

我在過去的48小時裏一直拉我的頭髮。我會很欣賞這裏的一些指導。
謝謝, 克里斯

+0

從函數重定向是一種不好的方法。 – urfusion

+0

'functions.php'沒有意義,應該產生一個無限循環,但它甚至沒有用正確的語法編寫,所以你的代碼應該被轟出。嘗試在PHP腳本的開頭添加'error_reporting(E_ALL);'。根據我的理解,「已經發送的頭文件」不應該是您獲得的唯一錯誤。另外,在隨機地方的雙星號是什麼。如果它不在您的代碼中,那麼請不要將它添加到您問題中的代碼中;相反,寫評論,提請注意問題點。 – MonkeyZeus

回答

0

下面的行觸發警報(functions.php的3號線):

redirect_to("Location: . $new_location"); 

它試圖發送標題,之後的東西已經被輸出(可能是另一個錯誤/警告考慮到你的語法被破壞)。檢查你的錯誤日誌。

0

嘗試在重定向之前刷新緩衝區。如果已經輸出了某些內容,並且您嘗試通過重定向更改標題,則會出現問題。

在更改標頭之前,可以使用頂部的ob_start()和使用ob_end_flush()刷新。

注意:刷新緩衝區只隱藏問題,而不是解決方案。有一些不好的編碼習慣,試着弄清楚。

相關問題