2010-05-27 89 views
2

我有这样的代码:PHP头刷新警告

<?php 
session_start(); 
echo "".$_SESSION['eventnum'].""; 
$urlRefresh = "testremot.php"; 
header("Refresh: 5; URL=\"" . $urlRefresh . "\""); 
?> 

但头不工作,当我尝试运行此代码此警告显示:

警告:不能更改头信息 - 头已经发出(输出开始在C:\ XAMPP \ htdocs中\ REMOT \ testremot.php:3)在C:\ XAMPP \ htdocs中\ REMOT \ testremot.php上线5 **

你能请帮帮我?

+2

重复前面没有空格或其它字符 – deceze 2010-05-27 09:21:47

+0

有什么之前< ?php标签? – apis17 2010-05-27 09:38:48

回答

2

好吧,让我们看看你有什么在line 3

echo "".$_SESSION['eventnum'].""; 

显然你生成这个线路输出(echo)和此行来调用header之前。
移动它下面header

session_start(); 
$urlRefresh = "testremot.php"; 
header("Refresh: 5; URL=\"" . $urlRefresh . "\""); 
echo "".$_SESSION['eventnum'].""; 

不过需要注意的(从Wikipedia):

W3C的Web Content Accessibility Guidelines (7.4)阻止自动刷新网页的创建,因为大多数Web浏览器不允许用户禁用或控制刷新率。你显示任何东西之前都

+0

谢谢我做你说的和它的工作 – basma 2010-05-27 09:49:08

2

发出标题之前,您无法回应任何内容。如果你必须,那么唯一的解决办法是做输出缓冲。

+0

谢谢..它的工作 – basma 2010-05-27 09:43:41

1
<?php 
    session_start(); 
    $urlRefresh = "testremot.php"; 
    header("Refresh: 5; URL=\"" . $urlRefresh . "\""); 
    echo "".$_SESSION['eventnum'].""; 
?> 

头必须设置,也有很多像这样的问题,周围...

+0

谢谢你的作品 我知道,我没有打印任何befor标题,但我认为这只严格的HTML代码,而不是PHP回声:) – basma 2010-05-27 09:53:14

1

不要使用Refresh头。并且不要在5秒内显示任何内容。这是可用性故障。 制作一个页面vieweventnum.php并使用Location标头将用户带到那里

+0

谢谢:)) – basma 2010-05-27 09:51:04

0

basma,删除<?php之前的任何空格或任何php标签之前的字符串。该代码应能正常工作,如果有一个gazilion其他问题http://stackoverflow.com/search?q=php+headers+already+sent开放<?php

+0

谢谢,你说得对,但这不是问题 – basma 2010-05-27 09:50:37

+0

代码在我的服务器上成功运行,如果在php之前什么也没有。也许有一些她错过了在第3行粘贴。我的意思是实际的代码。 – apis17 2010-05-27 10:05:17