PHP:标题不会重定向

时间:2013-12-31 03:18:45

标签: php redirect header web

当我将我的网站放在网上时,所有标题都不起作用。但是当我构建它时,只需要在本地数据库等上工作即可。#34; Works"精细。

我目前在网站上收到此错误:

  

警告:无法修改标题信息 - 已经发送的标题(/customers/5/8/4/infuze.dk/httpd.www/index.php:22中的输出)/ customers / 5/8/4第16行/infuze.dk/httpd.www/includes/functions.php

我稍微使用了google foo,据我所知,我在使用标题之前无法输出任何数据。但我不是这里的情况。

以下是我在网站上使用的代码。

if(empty($_GET['page'])){
    header('location: index.php?page=homepage');
}

或至少一个例子

2 个答案:

答案 0 :(得分:1)

当您尝试重定向的网页包含信息时,我通常会收到错误“无法修改标头信息 - 已经发送的标头”。检查脚本是否使用echo,include,require等,或者在您尝试重定向的行之前包含HTML标记。

<p>Hello!</p>
<?php
header('location: index.php?page=homepage');
?>

无效,因为它会在尝试重定向之前发送浏览器信息。

<?php
echo "Hi!";
header('location: index.php?page=homepage');
?>

也无法使用,因为它还会在尝试重定向之前发送浏览器信息。

<?php
header('location: index.php?page=homepage');
include('setup.txt');
?>
<h1>Amazing page!</h1>

会工作,因为它会尝试在重定向之后发送浏览器信息,但不会在之前发送。

答案 1 :(得分:0)

在以下情况下,标题不会重定向:

?>代码后文件中仍有空格。

为避免这种情况,请避免结束?>标记(文件结束)。

请检查是否有意外写入任何echoprint声明。

另外,请检查是否还有HTML个标记。

如果您关注,所有这一切,您的脚本都将有效。

最后,在文件的开头,输入

ob_start()

此函数会将您的所有页面输出存储在缓冲区中,因此您的重定向将起作用。