2012-11-29 126 views
2

我試圖從insert.php作爲動作表單POST數據。但是,一旦數據發佈到數據庫,我就不能重定向到index.php。PHP header()函數將不會重定向

我已經通過以下網站搜索中找到了答案:

以及關於這個問題的10點計算器的問題。

下面是insert.php文件的代碼:

<?php 
include 'connect.php'; 
$id = $_POST['id']; 
$idea = mysql_real_escape_string($_POST['new_idea']); 

if(!$_POST['submit']) { 
    echo "Please fill out the form!"; 
    header('Location: index.php'); 
} else { 
    mysql_query("INSERT INTO user_idea (`id`, `idea`, `time_created`) VALUES(NULL, '$idea', NULL)") or die(mysql_error()); 
    echo "Idea has been added!"; 
    header('Location: index.php'); 
}?> 

從我收集的,如果有文字輸出前的header()函數將不會執行。我已經試過這個功能,沒有回聲「已添加想法!」;並回顯「請填寫表格!」,但我仍然沒有得到重定向。

在此先感謝您的建議。

-MF

+0

頭應該是任何輸出之前。 –

+0

確保你沒有喜歡你的文件的頂部空白行或空的空間,或者您需要()或include() – akatakritos

回答

4

變通方法:在頁面的頂部使用ob_start()

其他方法:在頁開始<?php或之後?>前,請忽略任何空白 也請使用exit()header()

+0

+ 1的任何其他文件!!!!!!!!!!!!!!! –

+0

完美的diEchno。謝謝你,先生。 –

+0

@邁克爾,我的榮幸幫助:) – diEcho

6

從PHP documentation

header()函數被髮送任何實際輸出之前,必須被調用,或者通過正常的HTML標記,在一個文件中的空行,或從PHP。

而在你的情況,您使用的回聲報頭()之前

+0

這個答案封裝了主要問題。使用@ diEcho的答案來解決這個問題。 –

1

試試這個

<?php 
include 'connect.php'; 
$id = $_POST['id']; 
$idea = mysql_real_escape_string($_POST['new_idea']); 

if(!$_POST['submit']) { 
    $message = "Please fill out the form!"; 
    header('Location: index.php?message='.$message); exit; 
} else { 
    mysql_query("INSERT INTO user_idea (`id`, `idea`, `time_created`) VALUES(NULL, '$idea', NULL)") or die(mysql_error()); 
    $message = "Idea has been added!"; 
    header('Location: index.php?message='.$message); exit; 
}?> 

傳遞錯誤信息的index.php並顯示它。

0

頭之前,不要打印輸出()。將數據存儲到會話中或通過URL傳遞。 試試這一定會幫助你。