2010-01-08 70 views
0

我有一个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代理,我可以简单地做以下成功发送表单数据的第三方脚本的卷曲请求里面:

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

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

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

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

回答

0

正如名字已经说了,GET应该使用,如果你只想获得数据不改变在服务器端数据。
如果请求在服务器端更改数据,则应使用相同方法,POST

所以你应该根据你的要求选择方法。另请注意,网址的长度有限,因此您无法将例如将任意数量的文本转换为GET参数。

完全读完你的问题(:-D)后,似乎你的请求改变了(在这种情况下,增加了)数据,这意味着使用POST是更正确的方法。但是,因为您只能通过GET将其发送到您的代理,然后通过10发送给其他应用,只要它可以工作,就没问题。
它只取决于你发送什么类型的数据。

+0

谢谢!我熟悉何时使用GET和POST的一般规则。由于GET-> POST在这里工作,并且需要较少的代码,所以我想获得一些意见: 1.在这种情况下是否可以打破此规则。 2.是否有真正令人信服的理由(例如安全),我应该坚持POST而不是GET在这种情况下。 – Tex 2010-01-08 13:59:10

+0

正如我在你的情况说,它可能只取决于你发送的数据类型(URL的长度)。关于安全性:POST不比GET更安全。如果拦截HTTP请求,则无论是POST还是GET,都可以读取每个数据。你也可以篡改POST数据,Firefox有插件。所以没有太大的区别。 – 2010-01-08 14:18:04