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