我正在尝试实现一个相当复杂的第三方脚本,该脚本由几个互连的脚本组成。我在一个简单的页面中包含了脚本的介绍。该脚本基本上根据逻辑将不同的东西写入字符串,并在结尾处回显字符串。有时它会回显表单,当您单击提交时,脚本会再次运行,并且基于新逻辑回显不同的文本,这些文本在我的页面中显示正常,包含在前面的表单中。 (我页面中包含的第三方脚本也包含一些自己的脚本。)
我的问题是,而不是让它回应它回应的一些事情,特别是错误的成功消息,有时我想让它重定向到我网站上的另一个页面。
我已经成功完成了我的其他页面。我在页面中包含一个脚本,用于编写一些头类型代码。基于回忆脚本的用户的某些参数或动作,包括可以重定向到其自身或另一页面。我唯一需要确保的是,在重定向之前,在包含过程中没有写入空格或文本。
然而,使用这个第三方脚本,虽然我认为我已经删除了所有空格,但它不会让我重定向。错误消息将站在我的页面中的代码包含在第三方脚本中。这是msg:
Warning: Cannot modify header information - headers already sent by (output started at /blah blah/stepone.php:5).
第一步是我调用第三方脚本的简单页面。
我是否正确,即使当前显示某些文字,包含也可以重定向以响应用户操作?我应该只是检查第三方脚本的空白区域,还是有一些结构性的东西我可能做错了。
第三方脚本太大而无法放入此处,否则我会将它们放入。
感谢。
答案 0 :(得分:1)
您需要的是ob_start()
。这会缓冲输出并使您能够重定向,即使已经生成了输出。
答案 1 :(得分:1)
您提到的错误是因为标头已经发送到浏览器而发生的。当它再次尝试发送标头时,它会抛出一个错误。例如。
当你尝试做这样的事情时。
echo 'Hello World';
header('Location:some/location.php');
它可能会给你一个错误。因此,将重定向标题置于顶部始终是一件好事。但有时我们可能不希望这样。在这种情况下,您可以根据PHP的定义使用php的ob_start()打开输出缓冲
此功能将打开输出缓冲。输出缓冲是 而不是从脚本(除标题之外)发送的活动没有输出 输出存储在内部缓冲区
中
所以代替上面的示例代码,你可以使用类似的东西。
ob_start();
echo 'Hello World';
header('Location:some/location.php');
ob_end_flush();
答案 2 :(得分:0)
你必须:
ob_start()
。ob_end_flush()
。