<?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.php
或 connection.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/