Вот часть 1 нашей проблемы (загрузка динамически созданного XML-файла как PHP в Flash) .
Теперь нам удалось заставить Flash прочитать XML-файл, но мы можем видеть корректно визуализацию Flash при тестировании (тестовом фильме) из реальной программы Flash. Однако, когда мы загружаем наши файлы в Интернете, чтобы предварительно просмотреть Flash, он не отображается правильно, не хватает важной информации (миниатюр, заголовков, видео и т. Д.).
Файл SWF существует в домене 1 Файл XML и PHP существует на домене 2 И файл HTML с кодом вставки находится на домене 3
Интересно, может ли это быть проблемой с перекрестным доступом? У нас есть один из этих файлов на домене 1 и 2, где у нас есть доступ, однако для домена 3 у нас не может быть файла crossdomain.xml.
$xml = new XMLWriter(); $xml->openMemory(); $xml->setIndent(true); $xml->setIndentString("\t"); $xml->startDocument(); $xml->startElement('data'); $xml->startElement('config'); $xml->startElement('hex'); $xml->writeCData('0x' . $widget_profile['background_color']); $xml->endElement(); $xml->startElement('width'); $xml->writeCData($widget_profile['width']); $xml->endElement(); $xml->startElement('height'); $xml->writeCData($widget_profile['height']); $xml->endElement(); $xml->startElement('fullscreen'); $xml->writeCData('false'); $xml->endElement(); $xml->startElement('special'); $xml->writeCData('false'); $xml->endElement(); $xml->startElement('specialName'); $xml->writeCData('Tools & Offers'); $xml->endElement(); $xml->startElement('specialLink'); $xml->writeCData('XXXXXX'); $xml->endElement(); $xml->startElement('client'); $xml->writeCData($widget_profile['site_url']); $xml->endElement(); $xml->endElement(); if (count($widget_content) > 0) { foreach ($widget_content as $tab) { $xml->startElement('tab'); $xml->writeAttribute('id', $tab['tabname']); if (count($tab['video']) > 0) { foreach ($tab['video'] as $video) { $video_sql = "select VID, flvdoname, title from video where VID='" . $video . "'"; $video_result = $howdini->query($video_sql); if ($video_result->rowCount() > 0) { foreach ($video_result as $video_row) { $video_row['flvdoname'] = substr($video_row['flvdoname'], 35, -4); $xml->startElement('vid'); $xml->writeAttribute('flv', $video_row['flvdoname']); $xml->writeAttribute('thumb', 'XXXXXXXXX' . $video_row['VID'] . '.jpg'); $xml->writeAttribute('title', $video_row['title']); $xml->endElement(); } } } } $xml->endElement(); } } $xml->endElement(); $xml->endDocument(); header('Content-Type: text/xml; charset=UTF-8'); echo $xml->flush();
Заранее благодарим за любые ответы! EDIT: Я включил это изменение, и теперь Firebug видит XML. Теперь он просто не видит swf-файл, но я могу видеть swf-файл в других частях страницы.
Не полное решение, а просто точка данных (потому что проблемы с кодировкой сосут). Когда я загружал ваш XML через статический файл и файл PHP и менял их, я получил следующие результаты
% diff php.xml static.xml 1c1 < <?xml version="1.0"?> --- > <?xml version="1.0"?> 10a11 > 19a21 >
У вашего статического файла есть дополнительный символ «не-ASCII» в начале его.
Я предполагаю, что ваш статический XML-файл имеет спецификацию UTF-8, которую созданный PHP-файл не делает, и что ваш флеш-ролик ожидает файл UTF-8. Я бы попытался создать спецификацию с вашим XML-файлом PHP и увидеть, как он помогает, или возиться с настройками кодировки вашего сервера.
Попробуйте изменить PHP, чтобы он выводил следующий заголовок (соответствующий веб-странице, в которую встроен фильм).
header('Content-Type: text/html; charset=UTF-8')
Наверное, это был ответ. Мне нужно было добавить charset = UTF-8 в мой php. Теперь все работает так, как планировалось.