我在获取表单提交后尝试重定向用户时无法修改标头信息

时间:2015-10-30 03:32:35

标签: php html

我正在尝试在用户从API获得特定响应时放置标头。它大部分时间都有效,但有时标题不起作用,我收到以下错误:

*char* str = "0x058f";
result = strtol(str,NULL,16);
printf("result = %x\n",result);*

在这种情况下,第126行是我在页面上唯一的标题

Warning: Cannot modify header information - headers already sent by (output started at /home/ubuntu/workspace/Payment.php:90) in /home/ubuntu/workspace/Payment.php on line 126 Call Stack: 0.0001 238200 1. {main}() /home/ubuntu/workspace/Payment.php:0 2.6037 271848 2. header() /home/ubuntu/workspace/Payment.php:126  

我不确定为什么会这样(特别是因为它并不总是发生)。我的代码中某处有错误吗?

header("Location: $ConfirmationPage", false);

2 个答案:

答案 0 :(得分:1)

使用ob_flush。在代码的开头,使用

ob_start ();

之后

header("Location: $ConfirmationPage", false);
ob_flush();

答案 1 :(得分:0)

如果页面上有任何输出,则PHP header()将无效。

<强>解决方案:

1)在页面开头添加ob_start()

ob_start()会将输出保存到缓冲区并进行重定向。

2)使用javascript重定向。即使您在页面上有任何输出,也会发生Javascript重定向。

<?php
echo "<script>window.location.href='" . $ConfirmationPage . "';</script>";
?>