我正在尝试使用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
答案 0 :(得分:6)
答案 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传递。 试试这肯定会帮助你。