为什么我的header()函数没有重定向?

时间:2012-05-29 17:17:28

标签: php xml header

我有以下脚本来接收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>

3 个答案:

答案 0 :(得分:2)

尝试:

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

您的xml文件中不需要</xml>

答案 1 :(得分:1)

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

<?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代码应该可以正常工作。

答案 2 :(得分: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;
      }

 ?>