【问题标题】:send xml to external site in background在后台将 xml 发送到外部站点
【发布时间】:2009-11-11 10:34:30
【问题描述】:

我有一个表单,允许用户注册一封新闻信函,该信函提交回它所在的页面以进行验证并将内容添加到数据库中,但是我还需要使用从表单中收集的信息以添加到邮件列表中。发送给第三方的数据好像需要使用post方式发送。

我怎样才能做到这一点?

我尝试了 AJAX,但后来意识到 AJAX 无法向外部链接发送信息,所以放弃了。

基本上,站点需要重新加载页面,验证发送给它的信息,返回错误或添加信息到数据库并在后台触发 xml,因此在重新加载后发送单独的表单也不理想.此外,当通过主表单发送 xml 时,第三方页面会加载它自己的页面,这远非漂亮,并且会让用户远离我们的网站,一点也不好。

【问题讨论】:

    标签: php xml forms


    【解决方案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 替换为您要发送的文件,我们就完成了!

    【讨论】:

    • 听起来像我需要的,我遇到了几个问题,并且之前没有使用过 curl,我不知道该怎么做。首先,我假设 $aCurlHeaders 已在您的代码中的某个位置设置,这里需要做什么?其次,如果我想发送在 xml 中生成并存储在变量中的 xml,我该怎么做,而不是创建一个 xml 文件,发送它,然后删除它,这是一个时事通讯注册表单,所以要保留制作和删除文件会很烦人。
    • $aCurlHeaders[] = '接受:图像/gif,图像/x-位图,图像/jpeg,图像/pjpeg'; $aCurlHeaders[] = '连接:保持活动'; $aCurlHeaders[] = '内容类型:应用程序/x-www-form-urlencoded;charset=UTF-8';我将文件创建/删除过程留给你。
    • 感谢您的帮助。我会推高你的答案,但我太卑微了,无法做到这一点。当我意识到我需要对代码使用 post 方法时,我对您的代码进行了一些更改以使其满足我的需要,以便它通过 post 触发信息。现在一切正常,我是一只快乐的兔子,所以谢谢。卷曲很酷。
    【解决方案2】:

    我建议让您的服务器在将信息添加到数据库后将数据提交给第三方。如果需要,它甚至可以将此进程排队并在以后处理。

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

    【讨论】:

      【解决方案3】:

      XML 不是由您的用户浏览器发送,而是由您的服务器生成和发送,怎么样?您仍然可以使用 AJAX,而且您不必担心用户离开您的网站。

      类似

      浏览器 -> 服务器

      服务器 -> 写入自己的数据库 服务器 -> 生成一个 XML 文件并发送到外部服务器

      【讨论】:

      • 你能解释一下吗。当涉及到这种编码时,我会称自己为中级(可能要低一些)。我将如何告诉我的服务器生成和发送 xml? ajax 不会仍然拒绝发送到不同的服务器吗?
      • 不,因为您启用 AJAX 的客户端计算机不必发送服务器生成的 XML - 您的服务器将直接连接不同的服务器。
      猜你喜欢
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多