<?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');
?>
当我运行时,它说: 警告:无法修改标头信息 - 已经发送的标头(输出从第6行的xxxxx开始
有什么问题?
答案 0 :(得分:2)
header.php
或connection.php
正在输出一些内容。发送内容后,您无法修改HTTP标头,因为此时已经发送了标头。
解决方案的黑客就是:
<?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标题,您可以删除require 'header.php';
行 - 内容永远不会显示,因为这是重定向。
另请注意,HTTP标准要求,Location标头的值为绝对URL。 因此,header('Location: index.php');
会根据HTTP标准生成无效的HTTP响应。
答案 1 :(得分:0)
您的php代码正在从header('Location: index.php')
的标头数据之前发送包含文件中的内容。必须始终在任何其他内容之前发送HTTP标头。
请为了您自己,请使用parametrized queries。
答案 2 :(得分:0)
您可能会在header.php
或die
之前回复/打印一些内容,以便在您致电header('Location: index.php');
之前发送标题信息
答案 3 :(得分:0)
标题必须是脚本发送的第一件事。如果在调用header()函数之前页面有任何输出,那么您将收到该错误。