我想要这样的东西:
<a href="http://localhost/index.php?get=abc&post=cde&post=efg">link</a>
超链接中的 GET 和 2x POST。我怎样才能做到这一点?什么都不想工作
我在 PHP 中有一个 GET 数组,我想生成一个链接,该链接指向正确的 url 以给我这些 GET 变量。
您不能有 2 个具有相同名称的 GET 变量。您可以将它们排列成一个数组,如下所示:
<a href="http://localhost/index.php?get=abc&post[]=cde&post[]=efg">link</a>
只是为了澄清,这仍然是一个GET请求,链接通常不能产生一个POST请求,你也不应该尝试不正常地实现它。
编辑:回答 OP 的 calrification。
如果你有一个$_GET
数组,并且你想生成一个链接让你到达那里,你可以使用http_build_query()
我认为您不了解 GET 和 POST 在 HTTP 世界中的含义。您放在 URL 的查询字符串中的任何项目都是 GET 参数,您不能有 2 个具有相同名称。POST 参数作为请求的一部分发送,而不是 URL 上的查询字符串。
HTTP 标准中没有任何内容表明您不能发送两个具有相同名称的查询字符串参数。但是,您将无法使用 $_GET 来检索这些值;$_GET 将选择最后一个。相反,您必须手动解析 $_SERVER['QUERY_STRING']。这并不难,当 PHP 必须处理由第三方工具生成的 URL 模式时,我已经做过很多次了。如果您真的很喜欢,您可以让您的查询字符串解析例程生成一个 $_GET 成员作为数组,如果遇到该成员的多个实例。
GET 和 POST 是 http 操作。
使用 ? 发送值 作为 url 中的分隔符是不同但相关的。例如:
foo.com/page.php?val1=1&val2=2
这些值称为查询字符串值。
对于 GET 操作,值作为查询字符串值发送。对于 POST 操作,值在POST 请求的正文中发送。这就是为什么在向服务器发送大量数据时必须使用POST 的原因。(查询字符串有最大长度,HTTP 请求没有。)
您可以对包含查询字符串值的 url 执行 POST 操作。这在 Ajax 请求中更为常见,但也可以在表单中完成。只需将action
url设置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个变量,get和post