在后台将xml发送到外部站点

时间:2009-11-11 10:34:31

标签: php xml forms

我有一个表单,允许用户注册一个新闻信件,该信件会返回到它所在的页面进行验证并将内容添加到数据库,但是我还需要使用以下内容将xml文件发送到第三部分。从表单收集的信息添加到邮件列表中。发送给第三方的数据似乎需要使用post方法发送。

我怎样才能做到这一点?

我尝试了AJAX,但稍后意识到AJAX无法将信息发送到外部链接,因此放弃了。

本质上该站点需要重新加载页面,验证发送给它的信息,返回错误或添加信息db并在后台触发xml,因此让它在重新加载后发送一个单独的表单也不理想。当通过主窗体发送xml时,第三方页面加载了它自己的页面,这非常漂亮并且让用户远离我们的网站,并不是很好。

3 个答案:

答案 0 :(得分:1)

XML不是由用户的浏览器发送,而是由服务器生成和发送的?您仍然可以使用AJAX,并且您不会对用户离开您的网站感到头疼。

的内容

浏览器 - >服务器

服务器 - >写入自己的DB 服务器 - >生成XML文件并将其发送到外部服务器

答案 1 :(得分:1)

您必须在PHP中验证,然后从

发送XML
<?php
   $hCurl = curl_init();
   curl_setopt($hCurl, CURLOPT_PUT,            true);
   curl_setopt($hCurl, CURLOPT_HEADER,         true);
   curl_setopt($hCurl, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($hCurl, CURLOPT_CONNECTTIMEOUT, 60);
   curl_setopt($hCurl, CURLOPT_URL,            $URL_TO_UPLOAD);
   curl_setopt($hCurl, CURLOPT_HTTPHEADER,     $aCurlHeaders);
   // TODO it could be possible that fopen() would return an invalid handle or not work        altogether.  Should handle that
   $fp = fopen ($XML_FILE, "r");
   curl_setopt($hCurl, CURLOPT_INFILE,         $fp);
   curl_setopt($hCurl, CURLOPT_INFILESIZE,     $finfo['size']);
   $sResp = curl_exec($hCurl);
?>

只需将$ URL_TO_UPLOAD替换为要发送到的服务器,将$ XML_FILE替换为您要发送的文件,我们就完成了!

答案 2 :(得分:1)

我建议让服务器在将数据添加到数据库后将数据提交给第三方。它甚至可以排队这个过程,并在以后需要时处理它。

在PHP中有很多方法可以做到这一点,例如Curl