我有一个表单,允许用户注册一个新闻信件,该信件会返回到它所在的页面进行验证并将内容添加到数据库,但是我还需要使用以下内容将xml文件发送到第三部分。从表单收集的信息添加到邮件列表中。发送给第三方的数据似乎需要使用post方法发送。
我怎样才能做到这一点?
我尝试了AJAX,但稍后意识到AJAX无法将信息发送到外部链接,因此放弃了。
本质上该站点需要重新加载页面,验证发送给它的信息,返回错误或添加信息db并在后台触发xml,因此让它在重新加载后发送一个单独的表单也不理想。当通过主窗体发送xml时,第三方页面加载了它自己的页面,这非常漂亮并且让用户远离我们的网站,并不是很好。
答案 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。