2015-11-26 4 views
0

У меня возникла проблема с чтением содержимого XML-файла, размещенного на моем сервере через PHP. В моем каталоге хостинга у меня есть 1 файл PHP & другие 3 являются файлами XML. Файлы XML уже заполнены. У них есть текстовые данные. Все, что мне нужно, это то, что если я передам Value1 в мой php-файл, он должен прочитать File1.xml &, чтобы вернуть его содержимое как есть. Если я передам Value2 в мой php-файл, он должен прочитать File2.xml &, чтобы вернуть его содержимое как есть. Я пытался искать здесь в Stackoverflow, но не нашел ничего, связанного с этой конкретной проблемой.PHP-файл для возврата содержимого файла XML

+0

не смешно, как все ответы предлагают реализовать сценарий, где каждый может читать любой файл в вашей системе. хороший. – ins0

+0

@ ins0 Не все файлы, а только XML из 1 заданного местоположения. – divix

+0

неправильный поиск по запросу '' nullbytes'' – ins0

ответ

1

Я рекомендую file_get_contents или cURL для получения контента, а затем: SimpleXML для разбора XML.

$file = $_GET['xml_file']; 
$xml = file_get_contents($file.'.xml'); 

$simpleXml = new SimpleXMLElement($xml); 
echo $simpleXml->__toString(); 

Тогда использование будет что-то вроде: my.php?xml_file=file1

0

Они должны соответствовать вашему требованию.

$xml = file_get_contents($_POST['value']); 
$xml = trim($xml); 
header('Content-Type: text/xml'); 
echo $xml; 
exit(); 
0

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

$files = [ 
    'file1' => 'File1.xml', 
    'file2' => 'File2.xml', 
    'file3' => 'File3.xml' 
]; 

if (isset($_GET['file']) && isset($files[$_GET['file']])) { 
    header('Content-Type: text/xml'); 
    readfile($files[$_GET['file']]); 
} else { 
    echo 'Invalid file parameter.'; 
} 
Смежные вопросы