2

我有以下脚本接收 xml 文件并使用file_get_contents(). 我想将此 xml 重定向到一个名为“register”的文件,但它不起作用,我不知道为什么。

 <?php
     $xml_post=file_get_contents('php://input');
     $xml=simplexml_load_string($xml_post);
     if($xml->action=='register')
       {
        header('Location: http://proiectis.host22.com/register.php');
        exit;
      }

 ?>

我会很感激你的帮助。

这是我的xml:

  <xml version="1.0">

     <action>register</action>

     <parameters>

          <name>Ionel Popescu</name>

          <username>Ionel P</username>

      <email>ionel@popescu.com</email>

      <password>abdef01</password>

    </parameters>

    </xml>
4

3 回答 3

2

尝试:

if ((string) $xml->action === 'register') {
  // code
}

而且你不需要</xml>在你的 xml 文件中。

于 2012-05-29T17:24:20.853 回答
1

我认为 XML 文档中存在误解。您的文档中没有 XML 标头,但您使用<xml>-element 作为根元素。试试这个:

<?xml version="1.0"?> <!-- This is a typical xml header -->
<result> <!-- An xml document must contain exactly 1 root element -->
  <action>register</action>
  <parameters>
    <name>Ionel Popescu</name>
    <username>Ionel P</username>
    <email>ionel@popescu.com</email>
    <password>abdef01</password>
  </parameters>
</result>

原来的 PHP 代码现在应该可以工作了。

于 2012-05-29T17:56:34.210 回答
0

$xml->action返回SimpleXMLElement而不是您期望的字符串。所以使用这个代码:

 <?php
     $xml_post=file_get_contents('php://input');
     $xml=simplexml_load_string($xml_post);
     if((string)$xml->action == 'register')
       {
        header('Location: http://proiectis.host22.com/register.php');
        exit;
      }

 ?>
于 2012-05-29T17:31:02.133 回答