我想要这样的事情:
<a href="http://localhost/index.php?get=abc&post=cde&post=efg">link</a>
超链接中的GET和2x POST。我怎样才能做到这一点?什么都不想工作
我在PHP中有一个GET数组,我想生成一个链接,该链接导致正确的url给我那些GET变量。
答案 0 :(得分:4)
您不能拥有同名的2个GET变量。您可以按如下方式将它们排列成一个数组:
<a href="http://localhost/index.php?get=abc&post[]=cde&post[]=efg">link</a>
只是为了澄清,这仍然是 GET 请求,链接通常不会产生 POST 请求,也不应该尝试实现非正常的。
编辑:回答OP的诽谤。
如果你有一个$_GET
数组,并且想要生成一个链接来帮助你,你可以使用 http_build_query()
答案 1 :(得分:2)
我认为您不了解GET和POST在HTTP世界中的含义。您在URL的查询字符串上放置的任何项都是GET参数,不能有2个具有相同名称的项。 POST参数作为请求的一部分发送,而不是作为URL上的查询字符串发送。
答案 2 :(得分:0)
GET和POST是http操作。
使用?发送值?作为url中的分隔符是不同但相关的。例如:
foo.com/page.php?val1=1&val2=2
这些值称为Query String值。
对于GET操作,值将作为查询字符串值发送。对于POST操作,值将在POST请求的正文中发送。这就是在将大量数据发送到服务器时必须使用POST 的原因。 (查询字符串具有最大长度,HTTP请求不具有。)
您可以对包含查询字符串值的网址执行POST操作。这在Ajax请求中更常见,但也可以在表单中完成。只需将action
网址设置为index.php?val1=1&val2=2
,表单的(附加)值将作为http正文发送。请务必在表单中设置method="post"
。
请注意,您需要在此示例中自己创建查询字符串,包括正确转义它。
在查询字符串值中重复值名称
通常这会导致两个值都被发送,但是服务器会覆盖变量并最终只将最后一个呈现给客户端软件。
所以如果你使用像
这样的网址<a href="http://localhost/index.php?get=abc&post=cde&post=efg">
//它将被php和大多数服务器端框架解码为
将获取设为abc
将帖子设置为cde
将帖子设置为efg
结果:2个变量,获取和发布
答案 3 :(得分:0)
HTTP标准中没有任何内容表明您无法发送两个具有相同名称的查询字符串参数。但是,您无法使用$ _GET来检索这些值; $ _GET将拿起最后一个。相反,您必须手动解析$ _SERVER [&#39; QUERY_STRING&#39;]。它不是那么难,当PHP必须处理由第三方工具生成的URL模式时,我已多次完成它。如果您感觉非常喜欢,可以让查询字符串解析例程在遇到该成员的多个实例时生成$ _GET成员作为数组。