【问题标题】:PHP file to return content of XML File [closed]PHP文件返回XML文件的内容[关闭]
【发布时间】:2015-11-26 10:44:03
【问题描述】:

我在读取通过 PHP 托管在我的服务器上的 XML 文件内容时遇到问题。 在我的托管目录中,我有 1 个 PHP 文件,其他 3 个是 XML 文件。 XML 文件已填满。他们有文本数据。我所需要的是,如果我将 Value1 传递给我的 php 文件,它应该读取 File1.xml 并按原样返回其内容。如果我将 Value2 传递给我的 php 文件,它应该读取 File2.xml 并按原样返回其内容。我尝试在 Stackoverflow 上搜索,但没有找到与此特定问题相关的任何内容。

【问题讨论】:

  • 所有答案都建议实施一个脚本,让每个人都可以读取系统上的任何文件,这并不好笑。不错。
  • @ins0 不是所有文件,而是来自 1 个给定位置的 XML。
  • 错误请查nullbytes
  • @ins0 已在 5.3 中修复:bugs.php.net/bug.php?id=39863

标签: php xml file server


【解决方案1】:

我推荐file_get_contentscURL 用于获取内容,然后:SimpleXML 用于解析XML。

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

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

然后用法将类似于:my.php?xml_file=file1

【讨论】:

    【解决方案2】:

    See file_get_contents().

    <?php
        echo file_get_contents($_POST["value"]);
    ?>
    

    【讨论】:

    • 最佳答案
    【解决方案3】:

    这些应该符合您的要求。

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

    【讨论】:

      【解决方案4】:

      实际上,您不需要将文件视为 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.';
      }
      

      【讨论】:

        猜你喜欢
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多