Php标题('Location')错误

时间:2012-06-22 02:55:54

标签: php

  

可能重复:
  Headers already sent by PHP

我的php编码有些困难。

我有3个文件,add.php,lib.php和view.php

我创建了一个简单的表单,当用户单击“提交”时,它应该将它们定向到view.php,它将显示数据库。现在我遇到了一些我似乎无法解决的问题。

当用户单击“提交”并且字段为空或出现错误时,不应在视图页面(或数据库)中输入任何内容...但是,当我单击“提交”时,将在数据库中输入空白条目。此外,如果我单击顶部菜单栏中的“输入产品”,则会导致数据库中出现空白条目。我无法弄清楚为什么会这样。

我的下一个问题是标题('位置') 我的浏览器说:

“警告:无法修改标题信息 - 已在第16行的add.php中发送的标题(在lib.php:13处开始输出)”

但是,如果我点击表单上的提交,它就会消失。

以下是页面的代码:

如果代码真的很乱,我真的很抱歉。

非常感谢任何帮助/建议/解决方案。谢谢。

是的,这一项任务 - 它已于上周到期,但由于我无法完成,所以不再值得任何分数了。

2 个答案:

答案 0 :(得分:1)

您的if语句if (empty($_POST)){将始终失败,else将运行,因此空数据库条目将会运行。

$_POST将始终包含一些内容,即使对于空文本输入也是如此。每个键都将设置为空字符串。

要测试是否应保存数据,您需要验证所有必需的表单字段。您的代码可能看起来像这样。这绝不是完整或安全的,但它会指向正确的方向。

<?php

// store validation rules for required fields
$requiredFields = array(...);

// Store all validation errors here.
$errors = array();

foreach($requiredFields as $key=>$rule) {
    if(empty($_POST[$key])) {
        $errors[$key] = true;
    }
    else {
        // you can perform more validation work on the value here.
    }
}

if(count($errors) > 0) {
    // form submit failure.
}
else {
    // form submit success, save to db
}

答案 1 :(得分:0)

您在设置标头之前发送输出,因此不会发送指定的标头。