一尘不染

PHP标头位置重定向不起作用

php

不知道为什么这不起作用。这是代码:

if ((isset($_POST['cancel'])) && ($_POST['cancel'] == 'cancel'))
{
    header('Location: page1.php');
    echo $_POST['cancel'];
}

而不是重定向页面,此输出cancel到网页。它跳过了重定向。为什么?我怎样才能解决这个问题?page1.php是一个实际页面,与当前页面位于同一文件夹中。上面的代码是php文件的第一行。没什么
没有。甚至没有空格。


阅读 300

收藏
2020-05-29

共1个答案

一尘不染

Pekka在评论中回答了我的问题。他没有发布答案,所以我现在是。exit()标头重定向后使用此方法。由于某种原因,页眉的其余代码在header()方法重定向后仍继续执行。当其余代码执行完后,echo语句将输出到页面。输出到页面后,您将无法使用标题功能进行重定向。为了避免执行其余代码,请使用exit()。谢谢Pekka。

更新:使用Web浏览器Internet Explorer时,我注意到$ _POST
[‘cancel’]不可靠。我不确定为什么会这样,但是我怀疑IE在表单提交中发布了其他变量,特别是变量“取消”已发布。我通过使用’cancel’以外的变量名解决了这个问题。使用exit()和唯一变量名的组合对我来说很有效。

2020-05-29