在PHP提交中从URL发送XML


Send XML from URL on PHP submit

让我们想象一下以下情况:

您有一个带有html表单的简单php页面,允许用户输入以下数据:

  • 电话号码
  • 文本消息

例如:

<form action="xml-file.xml" method="get">
   <input type="text" id="to" name="to" value="" />
   <input type="text" id="text" name="text" value="" />
   <input type="submit" />
</form>

现在,您使用我测试过的这个方法创建了一个XML,并且工作起来没有问题,然后您希望使用这个其他方法(CURL)通过URL发送它。

不幸的是,我无法访问CURL方法,因为我无法链接提交操作来创建XML并将其发送到URL,因此它会转到本地服务器(www.example.xxx:1234),然后处理该XML以发送SMS。

如果XML的格式正确,则该服务器会发送一个响应。因此,我的问题是提交创建的XML。

帮助?

更新1:添加更新后的代码。这允许我(在sms.xml文件上使用chmod 777)随意编辑xml文件。

index.php

<html>
...
<form action="send.php" method="get">
   <input type="text" id="to" name="to" value="" />
   <input type="text" id="text" name="text" value="" />
   <input type="submit">
</form>
...
</html>

send.php

<?php
  $xml = simplexml_load_file("sms.xml");          // Load XML file
  $xml->Title3 = $_GET['to'];                         // Updating <Title3> from GET method
  $xml->Title5[0]->Title51Content = $_GET['text'];      // Updating <Title51> from GET method
  $xml->asXML('sms.xml');                         // Saving the XML file
?>

sms.xml

<?xml version="1.0" encoding="UTF-8"?>
<Title1>
   <Title2>Some Text</Title2>
   <Title3>Variable 1</Title3>
   <Title4>Some Text</Title4>
   <Title5>
      <Title51>Variable 2</Title51>
   </Title5>
</Title1>

附带说明:XML在发送时应该有"Content-Type","application/x-www-form-urlencoded"头,用于返回类似以下内容:

XML=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3...

谢谢!

将XML作为字符串返回并发布?

...
$xml_post_string = 'XML='.urlencode($xml->asXML());  
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://theurl.com');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
...