【问题标题】:Passing multiple POST parameters with the same parameter name传递多个具有相同参数名称的 POST 参数
【发布时间】:2015-01-14 22:03:51
【问题描述】:

我有一个场景,我需要发送一些 POST 参数但名称相同,我该怎么做? 我也有一个与 GET 类似的场景,我可以通过附加相同的参数名称来简单地构造 URL,但是如何使用 POST 来完成。 如果是用于 GET,它会类似于

          $url=$url."&team=".$name1;
          $url=$url."&team=".$name2;

但是我怎样才能对 POST 做同样的事情呢? 任何帮助表示赞赏 我试图搜索它,但找不到合适的答案

提前致谢

【问题讨论】:

  • 你是如何形成后参数的?您可以分享标记或其他内容吗?
  • @Subhanker 是的,确切地说,这发生在中间页面中,因此此 php 页面中没有发生用户活动
  • 如果你使用相同的参数名,每一个都会覆盖前一个,这意味着你只会得到最后一个。除非您使用数组参数(例如team[]=1&team[]=2 等)
  • @JayBlanchard 我将数据作为 POST 参数和逗号分隔的字符串从不同的页面接收,我根据逗号分解 tat 以将其分开并具有单独的值
  • @Uby 在检索参数时是否必须将其作为单独的数组值通过循环进行迭代??

标签: javascript php post url-rewriting get


【解决方案1】:

您可以使用表单数据中的hidden 字段以 POST 的形式发送值

<input type="hidden" name="name" value="value">

如果您不想要任何用户活动,您可以使用 Javascript 提交表单:

<form action="http://example.com/foo" name="hiddenform" method="POST">
    <input type="hidden" name="name1" value="value1">
    <input type="hidden" name="name2" value="value2">
</form>
<script type="text/javascript">
    setTimeout("document.forms['hiddenform'].submit();",0);
</script>

Above 将在屏幕上不显示任何内容,并在加载后立即提交表单。

旁注:如果你想根据setTimeout("document.forms['hiddenform'].submit();",0);中的需要延迟更改0的值

【讨论】:

  • 我已经提到没有用户活动发生,也没有任何表单元素
  • 更新了我的答案,希望对您有所帮助。
  • Subhanker 谢谢你。我曾在其他情况下尝试过。我实际上想知道是否可以不使用表单来做到这一点。显然我从@Uby 的 cmets 那里得到了答案,因为它可以作为数组传入。无论如何谢谢:)
  • 请记住,用户可以根据需要编辑表单。
  • @TomášZato 确实如此,但大多数用户甚至不会注意到任何表单提交,因为它会在页面加载后立即发生,但当然有极客头脑的人可以操纵数据和 OP 或任何使用它的人必须担心。
【解决方案2】:

如果您需要通过浏览器地址栏传递的值,则需要以这种方式形成链接:

$url = "team=".$name1.",".$name2;

然后在主 PHP 代码中你可以explode 将它放入数组块中:

$urlArray = explode(",", $url);

【讨论】:

  • 你在谈论 GET 而我问的是 POST
  • @Gotham'sReckoning POST 正常使用相同的数据编码。它仅在您发送文件时更改。这里是an answer explaining POST format。 PHP 和 Javascript 都有允许您生成请求的函数。
猜你喜欢
  • 1970-01-01
  • 2016-02-04
  • 2020-10-20
  • 2011-08-22
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多