Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Post/Redirect/Get场景中,heredoc干扰header()_Php_Heredoc_Post Redirect Get - Fatal编程技术网

Php 在Post/Redirect/Get场景中,heredoc干扰header()

Php 在Post/Redirect/Get场景中,heredoc干扰header(),php,heredoc,post-redirect-get,Php,Heredoc,Post Redirect Get,我在addToDb.php中有一个herdoc表单(如下所示)。当用户单击表单上的提交按钮(下表中的“添加记录”按钮)时,表单将发回addToDb.php 在验证表单上的数据是否正确后,我将数据添加到数据库中,并使用header()进行303重定向(这是我第一次尝试使用post/redirect/get) 我得到一个错误: “警告:无法修改标题信息-标题已由C:\xampp\htdocs\foo\addToDb.php:165在C:\xampp\htdocs\foo\addToDb.php的第1

我在addToDb.php中有一个herdoc表单(如下所示)。当用户单击表单上的提交按钮(下表中的“添加记录”按钮)时,表单将发回addToDb.php

在验证表单上的数据是否正确后,我将数据添加到数据库中,并使用header()进行303重定向(这是我第一次尝试使用post/redirect/get)

我得到一个错误:

“警告:无法修改标题信息-标题已由C:\xampp\htdocs\foo\addToDb.php:165在C:\xampp\htdocs\foo\addToDb.php的第129行和C:\xampp\htdocs\foo\addToDb.php的第130行发送”

(注意:上面对header的两个调用出现在addToDb.php的第129行和第130行)

下面是发生的情况:

  • 我用有效数据填写表格
  • 按“添加记录”
  • 然后,当我重新输入addToDb.php时,表单将重新显示
  • 我的记录已成功添加到数据库,但是
  • 我在浏览器中没有看到index.php,我仍然看到addToDb.php
  • 我得到的错误信息如上所述,并在下面重复:
“警告:无法修改标题信息-第129行的C:\xampp\htdocs\foo\addToDb.php中的C:\xampp\htdocs\foo\addToDb.php和第130行的C:\xampp\htdocs\foo\addToDb.php中已发送的标题(输出开始于C:\xampp\htdocs\foo\addToDb.php:165)”

我过去使用过heredoc方法,没有任何问题

但这是我有生以来第一次尝试实现Post/Redirect/Get


那么--herdeoc是否以某种方式干扰了我的PRG?

头必须首先发送到客户端。只要在发送http头之前不向客户端发送任何数据(即使用echo或将普通html放在php标记之外),就可以先在代码中执行任何操作(即测试post/get变量)。邮件头发送后,您当然可以做任何您喜欢的事情

因此,您得到了错误:

Cannot modify header information - headers already sent by...

由于您没有在文档开头提供标题,因此在文档开头会自动提供标题。

我没有。谢谢当我删除了所有调试echo和所有其他输出后,重定向就可以很好地工作到index.php。我甚至不得不删除一个var_dump()调用。
// check for valid form data and add to the database, then redirect now.........
header("HTTP/1.1 303 See Other");
header("Location: http://localhost/foo/index.php");
exit();
Cannot modify header information - headers already sent by...