没有以前的输出,但标题重定向在PHP中不起作用

时间:2010-05-18 16:00:57

标签: php header

header('Location: ' . $url);

我检查过没有以前的输出:

ob_start();

...
var_dump(ob_get_contents());
ob_flush();
header('Location: ' . $url);

输出:

string '' (length=0)

那为什么重定向会失败?

虽然我在error_log中看到了很多警告和通知,但只要它不向浏览器输出任何内容就不会影响header(),对吗?

更新

一些日志(虽然不应该相关):

[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP Deprecated:  Function eregi() is deprecated in D:\\Works\\general
[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://localhost/cookie_usage.php
[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP   1. {main}() D:\\Works\\login.php:0, referer: http://localhost/cookie_usage.php
[Wed May 19 00:26:10 2010] [error] [client 127.0.0.1] PHP   2. tep_redirect() D:\\Works\\login.php:33, referer: http://localhost/cookie_usage.php

3 个答案:

答案 0 :(得分:3)

ob_flush()发送到输出缓冲区。 (打印OB中的内容) 这被视为输出。 你可能想使用ob_clean()

使用它也是一种好习惯 在标题('location ...')调用之后退出()或die()。

另请注意,文件末尾的空格会执行此操作。

在大多数情况下,我从不使用?>在PHP文件的末尾,只需将其打开

&GT?;无论如何都是可选的。

答案 1 :(得分:0)

我几天前就遇到过类似的问题了。在php包含文件的末尾有额外的空格,我在标题函数之前调用了它。我删除了那个空白区域,它开始为我工作。

答案 2 :(得分:-3)

  

不会影响header()   因为它没有输出任何东西   浏览器,是吗?

错误。