Как создать файл XML с php и попросить его загрузить?

Я использую domdocument для создания xml-файла:

$dom = new DOMDocument('1.0', 'iso-8859-1'); echo $dom->saveXML(); 

Когда я нажимаю ссылку на этот файл, он просто отображает его как XML-файл. Как я могу попросить скачать вместо этого? Кроме того, как я могу запросить его загрузить как «backup_11_7_09.xml» (вставить сегодняшнюю дату и поместить его как xml) вместо реального имени php-файла, которое является «backup.php»,

Установите заголовок Content-Disposition в качестве вложения до вашего эха:

 <? header('Content-Disposition: attachment;filename=myfile.xml'); ?> 

Конечно, вы можете отформатировать myfile.xml с помощью strftime() чтобы получить форматированную дату в имени файла:

 <? $name = strftime('backup_%m_%d_%Y.xml'); header('Content-Disposition: attachment;filename=' . $name); header('Content-Type: text/xml'); echo $dom->saveXML(); ?> 
 <?php // We'll be outputting a PDF header('Content-type: text/xml'); // It will be called downloaded.pdf header('Content-Disposition: attachment; filename="my xml file.xml"'); // The PDF source is in original.pdf readfile('saved.xml'); // or otherwise print your xml to the response stream ?> 

Используйте заголовок содержимого.

Это должно работать:

 header('Content-Disposition: attachment; filename=dom.xml'); header("Content-Type: application/force-download"); header('Pragma: private'); header('Cache-control: private, must-revalidate'); $dom = new DOMDocument('1.0', 'iso-8859-1'); echo $dom->saveXML(); 

Если вы используете сеанс, используйте следующие настройки для предотвращения проблем с IE6:

 session_cache_limiter("must-revalidate"); session_start();