重定向功能Php

时间:2011-08-18 20:05:03

标签: php redirect http-headers

我有一个函数,'redirect_to()'写在php脚本上,在我的自定义CMS上成功更新页面后调用。它在localhost上工作正常,但是当我在我的实际域上尝试它时,我收到以下错误消息:

警告:无法修改标题信息 - 已经发送的标题(输出在/hermes/bosweb/web119/b1192/ipg.typaldosnetcom/edit_listing.php:7开始)/hermes/bosweb/web119/b1192/ipg.typaldosnetcom第20行/includes/functions.php

以下是redirect_to()函数的代码:

function redirect_to ($location = NULL) {
    if ($location != NULL) {
        header("Location: {$location}");
        exit;
    }
}

我确保在输出任何HTML之前调用该函数,所以我不确定问题到底是什么。

我的问题:为什么我收到此错误?

6 个答案:

答案 0 :(得分:2)

这不是谎言。在达到这一点之前,你已经输出了一些东西。检查错误消息中提到的位置。

向我们展示所提到的每个文件的前25行。

答案 1 :(得分:1)

在设置标题之前,您已将输出发送到页面。首先你需要设置标题,然后输出就可以了。

它甚至可以是空白。

答案 2 :(得分:0)

这意味着已在建议的行上输出了某些内容。试着去看看它的作用。

如果您自己找不到问题,请尝试粘贴该位置的周围代码以获得更好的说明。

答案 3 :(得分:0)

一个常见的原因是在你包含的php文件之后有一行......

简单解决方案:删除关闭的php标记“?>”来自所有文件,因为它不需要..

答案 4 :(得分:0)

使用输出缓冲:

<?php 
ob_start();

// Test buffered output. 
echo 'hello world'; 

function redirect_to ($location = NULL) {
    if ($location != NULL) {
        header('Location: ' . $location);
        exit;
    }
}

// rest of php file here

ob_end_flush();
?>

文档:ob_start()ob_end_flush()

答案 5 :(得分:0)

您可以通过删除任何关闭的php脚本标记来测试在打开php-script标记之前是否有字符。这样你就可以确定没有留下任何角色(不需要)。