我重复使用搜索PHP脚本,但是我收到了这个错误:
警告:无法修改标头信息 - 已发送的标头 (输出从/ Volumes / Work / MAMP / PC开始 Flag / php_scripts / conection.php:2)in / Volumes / Work / MAMP / PC 第63行的标记/包含/ search.php
第2行conection.php:
$con = mysqli_connect("localhost", "root", "root", "cms");
第63行search.php:
header('Location: search-page.php?keywords=' . urlencode($keywords));
有什么问题?
另外我需要提一下,脚本不会再将我重定向到search-page.php了。
答案 0 :(得分:3)
当你使用header()
之前,它不应该是任何输出,甚至不是空格,你有两个解决方案:
在标题前使用ob_clean()
来清理输出缓冲区
ob_clean();
header('Location: search-page.php?keywords=' . urlencode($keywords));
在您的脚本和请求路线中搜索任何输出,<?php
之前的内容,echo
es,HTML代码,print
或?>
之后的空格原因;)
此代码段可以帮助您找出代码中输出的位置:
var_dump(ob_get_contents());die()
把它放在第63行之前
如果一切都失败了,你还有另外一个选择,使用javascript重定向,虽然我建议你继续尝试,但不要到达这一点:)
将header(...)
替换为:
echo '<script>window.location.href="search-page.php?keywords=' . urlencode($keywords)) . '";</script>';
答案 1 :(得分:1)
您已经发送了一个标题作为错误状态。请调查when and how headers are sent。
通常在该行之前打印输出缓冲区时会发生这种情况。
确保您使用的是UTF-8 without BOM
文档编码 - 在大多数文本编辑器中,BOM符号是不可见的,但可以解释为强制发送HTTP标头的内容。
答案 2 :(得分:0)
这是因为输出已经发送了。当你回应任何东西时,你不能编辑标题信息!
答案 3 :(得分:0)