2009-02-03 6 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

Сообщение об ошибке запускается из-за HTML, который появляется перед вашим первым тегом <?php. Вы не можете вывести ничего до того, как вызывается header(). Чтобы исправить эту ошибку, запустите свой документ с тегом <?php и начните выводить HTML только после того, как вы закончите обработку условия, которое выводит XML для flash.

Более чистым решением будет выделение генерации XML для флэш-памяти и выход HTML в разные файлы.

+0

Стоит отметить, что вы можете начать выводить материал с помощью php перед вызовом заголовка, если вы включите буферизацию вывода. Полезно в некоторых, в противном случае, неприятных ситуациях. http://php.net/manual/en/ref.outcontrol.php – navitronic

+0

Буферизация вывода может быть весьма полезна. Обратите внимание, что в исходном коде придется отказаться от предыдущего вывода перед возвратом XML, что является плохой практикой. –

4

сообщение об ошибке означает, что PHP скрипт уже послал вывод в браузер перед вызовом функции заголовка() или что-нибудь еще, что требует изменения заголовков HTTP.

это действительно трудно, чтобы попытаться диагностировать, где проблема происходя без увидеть скрипт правильно отформатированный, но эта строка:

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

должен быть в начале сценария в PHP-теги.

+0

thn x много ................. – musicking123

+0

upvote для удобного подсказки Navitronic! – patrick

0

как nav говорит, это означает, что выход уже отправлен. В этом случае это все

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

Вы прошли там. Перед этим нужно переместить весь блок обработки php.

1

Кажется, что вы пытаетесь использовать Flash MP3-плеер, но вы смешиваете некоторые вещи.

Вы создаете файл плейлиста XML в том же файле, что и у вас, вы можете сделать это, но я думаю, что будет проще и проще, если скажем, файл genPlayList.php, который будет генерировать XML-файл для вас.

Затем на странице MP3-плеер вы можете иметь только ссылку на этот сценарий:

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

Попробуйте использовать JavaScript перенаправления вместо перенаправления с заголовком.

Смежные вопросы

 Смежные вопросы