【问题标题】:Web Proxy (PHP & curl), AJAX and Multidimensional associative $_POST Array or $_SERVER['QUERY_STRING']?Web 代理(PHP 和 curl)、AJAX 和多维关联 $_POST 数组或 $_SERVER['QUERY_STRING']?
【发布时间】:2010-01-08 10:42:47
【问题描述】:

我有一个 html 表单,它通过 AJAX(jquery 表单插件)提交到我服务器上的 PHP Web 代理。 Web 代理使用 curl POST 到第三方脚本。

我的 html 表单的输入名称为 p[fname]、p[lname]、c[name]、p[loc]、p[loc][email]、p[loc][email][detail]。名称由第三方应用程序指定。

当我使用 GET 将表单提交到 Web 代理时,我可以简单地执行以下操作以将表单数据成功传输到 curl 请求中的第三方脚本:

$postvars = $_SERVER['QUERY_STRING'];
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);

问题 #1:使用 GET 将表单数据提交到我的网络代理有什么“错误”吗?正如我所提到的,它工作正常,并且需要更少的编码。 $_SERVER['QUERY_STRING'] 包含我需要通过 POST 传递给第三方的数据,格式完全正确。

问题 #2:如果有令人信服的理由使用 POST 提交到我的 Web 代理,那么在 $_POST 中循环多维关联数组以便动态构建 $postvars 而无需硬编码的最佳方法是什么任何关键值?

注意:html 表单不是关键任务,它提交的数据会进入第三方服务的批准提示。它不会直接插入到生产数据中。

【问题讨论】:

    标签: php ajax post curl get


    【解决方案1】:

    正如名称所述,如果您只想获取数据不更改服务器端数据,则应使用GET
    同样,如果请求更改服务器端的数据,则应使用POST

    所以你应该根据你的请求来选择方法。另请注意,URL 的长度有限,因此您不能放置例如将任意数量的文本放入 GET 参数中。

    在完整阅读您的问题 (:-D) 之后,您的请求似乎更改(在这种情况下添加)数据,这意味着使用 POST 是更正确的方法。但是由于您只通过GET 将其发送到您的代理,然后通过POST 发送到其他应用程序,只要它有效,就可以了。
    这仅取决于您发送的数据类型。

    【讨论】:

    • 谢谢!我熟悉什么时候应该使用 GET 和 POST 的一般规则。由于 GET->POST 在这里工作,并且需要更少的编码,我试图获得一些意见: 1. 在这种情况下是否可以打破这个规则。 2. 在这种情况下,是否有任何真正令人信服的理由(例如安全性)我应该坚持使用 POST 而不是 GET。
    • 正如我在您的情况下所说的,它可能仅取决于您发送的数据类型(URL 的长度)。关于安全性:POST 并不比 GET 更安全。如果你拦截一个 HTTP 请求,你可以读取每一个数据,无论它是 POST 还是 GET。你也可以篡改 POST 数据,有 Firefox 的插件。所以没有太大区别。
    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 2013-10-22
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2013-09-10
    相关资源
    最近更新 更多