0

可能重复:
PHP 已发送的标头

我的 php 编码遇到了一些困难。

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

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

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

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

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

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

这是页面的代码:

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

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

是的,这一项作业——上周到期,但由于我无法完成它,它不再值得任何分数。

4

2 回答 2

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
}
于 2012-06-22T03:12:21.153 回答
0

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

于 2012-06-22T03:01:01.820 回答