PHP header 错误 为什么这不起作用?

标签 php mysql html

<?php
require 'header.php';
require 'connection.php';

mysql_query("DELETE FROM quotes WHERE ID = $_GET[id]") or die("didnt delete properly");
header('Location: index.php');
?>

当我运行它时,它说: 警告:无法修改 header 信息 - header 已发送(输出从第 6 行的 xxxxx 开始

出了什么问题?

最佳答案

header.phpconnection.php 正在输出一些内容。发送内容后您无法修改 HTTP header ,因为此时 header 已经发送。

解决方案的一个技巧是:

<?php

ob_start();

require 'header.php';
require 'connection.php';

mysql_query("DELETE FROM quotes WHERE ID = $_GET[id]") or die("didnt delete properly");

header('Location: index.php');

ob_end_flush();

?>

但是,您应该找出内容发送的位置并抑制它,或者将其重新排序以使其位于 header() 调用之后。

如果,正如我怀疑的那样,header.php 输出 HTML header ,您可以删除 require 'header.php'; 行 - 内容永远不会无论如何都会显示,因为这是一个重定向。

另请注意,HTTP 标准要求 Location header 的值是绝对 URL。 因此,header('Location: index.php'); 将生成一个根据 HTTP 标准无效的 HTTP 响应。

关于PHP header 错误 为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4400842/

相关文章:

php - 允许在 SOAP API 响应(PHP)中下载 PDF 文件(作为附件)

php - 上传文件夹php

mysql - 不插入多条记录的触发器

javascript - 如何同步和显示不同谷歌图表的工具提示?

html - 如何组合:first-child and :hover?

html - CSS 绝对位置子菜单在父容器上显示滚动条

php - 如何根据分配给每个页面的类别为 wordpress 菜单列表着色?

php - 填充表中的下拉菜单,然后从另一个表中设置所选选项

php - 查询性能调试

mysql - 无法加载供应商库 libmysql.dll 或 libmysqld.dll