php header()函数不会重定向

时间:2012-11-29 05:55:59

标签: php redirect header

我正在尝试使用insert.php作为操作从表单发布数据。但是,一旦数据发布到数据库,我就无法重定向回index.php。

我搜索了以下网站以找到答案:

以及关于该主题的十个stackoverflow问题。

以下是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()函数将不会执行。我已经尝试过这个函数而没有回音“已经添加了Idea!”;并回声“请填写表格!”;但我仍然没有重定向。

提前感谢您的建议。

-MF

4 个答案:

答案 0 :(得分:6)

来自PHP documentation

header()必须在发送任何实际输出之前调用,可以是普通的HTML标记,文件中的空行或PHP。

在你的情况下,你在header()之前使用echo

答案 1 :(得分:4)

解决方法:在页面顶部使用ob_start()

其他方法:在页面中<?php开始之前或?>之后,请省略任何空白区域 并在exit()

之后使用header()

答案 2 :(得分: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 并在那里显示。

答案 3 :(得分:0)

不要在标题()之前打印输出。将数据存储到会话中或通过URL传递。 试试这肯定会帮助你。