2

xml ファイルを受け取り、.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->actionSimpleXMLElement期待した文字列の代わりに戻ります。したがって、次のコードを使用します。

 <?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 に答える