gpt4 book ai didi

Php header 位置重定向不起作用

转载 作者:IT王子 更新时间:2023-10-29 00:06:32 25 4
gpt4 key购买 nike

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

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

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

最佳答案

这可能是已发送的 header 产生的问题。

为什么

如果您在决定重定向之前回应了任何内容,就会发生这种情况。如果是这样,则初始(默认) header 已发送,新 header 无法替换输出缓冲区中已准备好发送到浏览器的内容。

有时甚至没有必要自己附和一些东西:

  • 如果向浏览器输出错误,则它也被视为内容,因此必须在错误信息之前发送 header ;
  • 如果您的一个文件以一种格式编码(比方说 ISO-8859-1)而另一个文件以另一种格式编码(比方说带 BOM 的 UTF-8),则两种编码之间的不兼容可能会导致一些字符被输出;

让我们检查一下

要测试是否是这种情况,您必须启用错误报告:error_reporting(E_ALL); 并设置要显示的错误 ini_set('display_errors', TRUE); 之后,您可能会看到一条警告,指出 header 已发送。

让我们修复

修复此类错误:

  • 在输出任何内容之前在代码中的某处编写重定向逻辑;
  • 使用输出缓冲区捕获任何传出信息,并仅在您知道所有重定向尝试已运行时的某个时间点释放它;
  • 他们已经使用合适的 MVC 框架解决了这个问题;

更多

MVC 通过确保逻辑在 Controller 中并且 Controller 仅在 Controller 的末端触发 View 的显示/呈现来从功能上解决它。这意味着您可以决定在操作中的某处执行重定向,但不在 View 中。

关于Php header 位置重定向不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21226166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com