tags:

views:

650

answers:

5

when am running player.php its giving an error

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

can u plz help?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<html xmlns="http://www.w3.org/1999/xhtml"&gt;
<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>
+3  A: 

The error message means that the php script has already sent output to the browser before calling the header() function or anything else that requires modifying the http headers.

it is really hard to try and diagnose where the problem is occuring without see the script properly formatted, but this line:

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

should be at the start of the script in php tags.

navitronic
thn x a lot.................
musicking123
A: 

like nav says, it means output has already been sent. In this case it's all the

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

you got going on there. You should move the entire php processing block before this.

+4  A: 

The error message is triggering because of the HTML that appears before your first <?php tag. You cannot output anything before header() is called. To fix this error start your document with the <?php tag and only start outputting HTML after you are done handling the condition that outputs XML for flash.

A cleaner solution would be to separate out the XML generation for flash and the HTML output into different files.

Jeff M
Its worth noting that you can start to output stuff with php before a header call if you turn on output buffering. Useful in some otherwise frustrating situations. http://php.net/manual/en/ref.outcontrol.php
navitronic
Output buffering can be quite useful. Note that in the original code would have to discard the prior output before returning the XML, which is a bad practice.
Jeff M
+1  A: 

Seems that you're trying to use a Flash MP3 Player, but you're mixing up some things.

You're generating the XML playlist file on the same file that you have the player, you could do it, but I think that will be clearer and simpler to have lets say, a genPlayList.php file that will generate the XML file for you.

Then in your MP3 Player page you can have only a reference to that script:

....
so.addVariable("playlistPath","genPlayList.php");
....
CMS
A: 

thank u...

i got it right.....its working now.....

musicking123
Why do you accept own answer? There were people who helped you, pick one of them!
tomash