Когда я запускаю 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>
Сообщение об ошибке запускается из-за HTML, который появляется перед вашим первым <?php
. Вы не можете выводить ничего перед header()
. Чтобы исправить эту ошибку, запустите свой документ с <?php
и начните вывод HTML после того, как вы закончите обработку условия, которое выводит XML для флеш-памяти.
Более чистым решением будет выделение генерации XML для флэш-памяти и вывода HTML в разные файлы.
Сообщение об ошибке означает, что php-скрипт уже отправил вывод в браузер перед вызовом функции header () или чего-либо еще, требующего изменения заголовков http.
очень сложно попробовать и диагностировать, где возникает проблема, не видя корректно отформатированный сценарий, но эта строка:
header("Content-Type: text/plain");
должен быть в начале скрипта в тегах php.
Кажется, вы пытаетесь использовать Flash MP3 Player, но вы смешиваете некоторые вещи.
Вы создаете файл списка воспроизведения XML в том же файле, который у вас есть, вы можете это сделать, но я думаю, что будет проще и проще, если скажем, файл genPlayList.php, который будет генерировать XML-файл для вас ,
Затем на странице вашего MP3-плеера вы можете иметь только ссылку на этот скрипт:
.... so.addVariable("playlistPath","genPlayList.php"); ....
как говорит nav, это означает, что вывод уже отправлен. В этом случае все
<!DOCTYPE html PUBLIC ... .... <body>
вы пошли туда. Перед этим нужно переместить весь блок обработки php.
Попробуйте использовать перенаправление javascript вместо перенаправления с заголовком.