2009-02-03 82 views
1

发送标题:警告:不能更改头信息 - 当我运行player.php它给这个错误已经被

Warning: Cannot modify header information - headers already sent by (output started 
at /www/110mb.com/m/u/s/i/c/k/i/n/musicking/htdocs/player.php:8) in 
/www/110mb.com/m/u/s/i/c/k/i/n/musicking/htdocs/player.php on line 24 

能否请你帮忙吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Player</title> 
</head> 
<body> 
<?php 
if(isset($_POST["song"])&& $_POST['song'] != "") 
    { 
     $song = $_POST["song"]; 
    } 
    else {$song=array();} 
for ($i="0"; $i<count($song); $i++) { 
} 
//start of new php codep 
// create doctype 
//$array = array(
    // 'song.mp3','song.mp3','song.mp3', 
//); 
$dom = new DOMDocument("1.0"); 
// display document in browser as plain text 
// for readability purposes 
header("Content-Type: text/plain"); 
// create root element 
$root = $dom->createElement("xml"); 
$dom->appendChild($root); 
$i = "1"; 
foreach ($song as $counter) { 
// create child element 
$song = $dom->createElement("track"); 
$root->appendChild($song); 
$song1 = $dom->createElement("path"); 
$song->appendChild($song1); 
// create text node 
$text = $dom->createTextNode($counter); 
$song1->appendChild($text); 
$song1 = $dom->createElement("title"); 
$song->appendChild($song1); 
$text = $dom->createTextNode("song ".$i); 
$song1->appendChild($text); 
$i++; 
} 
// save and display tree 
$dom->save("playlist.xml"); 
?> 
<script type="text/javascript" src="swfobject.js"> 
</script> 
<div id="flashPlayer"> 
    This text will be replaced by the flash music player. 
</div> 
<script type="text/javascript"> 
    var so = new SWFObject("playerMultipleList.swf", "mymovie", "295", "200", "7", "#FFFFFF"); 
    so.addVariable("autoPlay","yes") 
    so.addVariable("playlistPath","playlist.xml") 
    so.write("flashPlayer"); 
</script> 
</body> 
</html> 

回答

7

由于在第一个<?php标记之前出现的HTML,因此会触发错误消息。在调用header()之前,您无法输出任何内容。要解决此错误,请使用<?php标记启动文档,并在完成处理输出用于Flash的XML的条件后才开始输出HTML。

一个更简洁的解决方案是将闪存的XML生成和HTML输出分离到不同的文件中。

4

该错误消息表示调用header()函数或其它任何需要修改的HTTP标头之前PHP脚本已经发送输出到浏览器。

真的很难去尝试和诊断问题的根源所在,而不看到正确格式的脚本存在的,但此行:

header("Content-Type: text/plain"); 

应该是在PHP代码的脚本的开始。

+0

th x x很多................. – musicking123 2009-02-03 06:28:08

+0

upvote为方便的提示Navitronic! – patrick 2011-11-16 10:47:54

0

像nav说的,这意味着输出已经发送。在这种情况下,它是所有的

<!DOCTYPE html PUBLIC ... 
.... 
<body> 

你已经在那里。 您应该在此之前移动整个php处理块。

1

似乎你正在尝试使用Flash MP3播放器,但你正在混合一些东西。

您正在生成的XML播放列表文件与您拥有播放器的文件相同,您可以这样做,但我认为这会更清晰更简单,让我们说一个genPlayList.php文件,它将生成XML文件给你。

然后在你的MP3播放器页面,您可以仅拥有该脚本参考:

.... 
so.addVariable("playlistPath","genPlayList.php"); 
.... 
0

尝试使用JavaScript重定向,而不是用头重定向。

相关问题