我在混合了 php 的文件的头部有几行脚本:
<script>$( "#company" ).autocomplete({
source: "<?php echo $absolute_site . "autocomplete/autocompletecompany.php" ?>"....
.............
<script>
稍后在文件中传递一个 php 命令:
header("Location: index.php?act=edit&peopleID=$last_peopleID")
但我得到
警告:无法修改标头信息 - 标头已发送
警告是指脚本中的 PHP 行。
如何在没有收到警告的情况下执行此操作?谢谢!
编辑在阅读了如何修复 PHP 问题(和答案)中的"标头已发送"错误和 Okneloper 对我原始问题的回答后,我修改了标题并提出了我使用的解决方案,希望这个问题不再是重复的,它可能对遇到相同问题的其他人有用。
溶液
我的表单文件包括:php 部分
if (isset ($_POST["submit"]) ){
.... all the sql commands including the:
header("Location:pathtopage")
}
和 HTML 表单演示:
<form> ...my form </form>
问题是因为模板文件在正文中调用表单文件,即在标题之后。为了避免这种情况,在表单文件中,我将所有表单输出放在一个函数中。
function output_form(){
<form> ...my form </form>
}
在模板文件中,作为第一行,我包含了表单文件。然后稍后在正文中(我想打印我的表单),我调用了表单输出函数。
<?php include ('formfile.php'); /* no spaces before <!!!! */ ?>
身体后期
<?php form_output(); ?>
希望这能有所帮助!
您需要在执行任何输出之前发送标头或在脚本顶部启用输出缓冲:
ob_start();
标头在响应正文之前发送,因此如果已开始输出 body,则无法更改或添加标头。
标头已发送,这意味着您无法更改它们。 如果要自定义标头,则必须在发送标头之前执行此操作(页面顶部)。
如果您尝试在 PHP 中重定向,请使用 javascript。 这是您内联操作的方式:
function redirect($url){
$string = '<script type="text/javascript">';
$string .= 'window.location = "' . $url . '"';
$string .= '</script>';
echo $string;
}
//later in the page
redirect('example.com/my/url/here/01.');