2

我正在尝试使用 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() 函数将不会执行。我已经尝试过没有回显“已添加想法!”的此功能;并回显“请填写表格!”;但我仍然没有得到重定向。

提前感谢您的建议。

-MF

4

4 回答 4

6

来自 PHP文档

header() 必须在发送任何实际输出之前调用,无论是通过普通 HTML 标记、文件中的空白行还是通过 PHP。

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

于 2012-11-29T05:58:43.127 回答
4

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

其他方法:请在页面开始之前<?php或之后省略任何空白,也请在之后使用?>exit()header()

于 2012-11-29T05:57:36.950 回答
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并在那里显示。

于 2012-11-29T06:00:28.850 回答
0

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

于 2012-11-29T06:10:58.367 回答