为什么我的 header() 函数不重定向


Why doesn't my header() function redirect?

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

尝试:

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

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

我认为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代码现在应该可以工作了。

$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;
      }
 ?>