【问题标题】:How are same named input tags represented on the server side服务器端如何表示同名输入标签
【发布时间】:2014-10-01 18:59:02
【问题描述】:

在查看不同形式的一些源代码时,我遇到了这段代码

<input class="" id="Delivery_HasShippingAddress" name="Delivery.HasShippingAddress" tabindex="11" type="checkbox" value="true" />
<input name="Delivery.HasShippingAddress" type="hidden" value="false" />

属于同一个形式。如您所见,有两个 input 标签具有相同的名称,但类型和 ID 不同。如果表单提交tamper data 将它们“都”列为POSTDATA:

Delivery.HasShippingAddress=true
Delivery.HasShippingAddress=false

我现在想知道如何处理此请求?

服务器是用第二个值覆盖第一个值,还是接收到的第一个值占主导地位,或者可能同时列出两个值(虽然会很奇怪)?

【问题讨论】:

  • 如果我没记错的话,你会得到一个值数组
  • @Crackertastic Quentin 声称没有标准的处理方式。我更愿意接受包含告诉我如何处理它们符合标准的来源或告诉我没有来源的答案
  • @Sim 那很好,我不确定答案,这就是我没有写答案的原因。我之前的评论(现已删除)的措辞也有误。 PHP 会覆盖同名字段。但这并不是说另一种语言会有所不同,或者您无法将所述语言配置为以任何特定方式进行。

标签: html web-standards


【解决方案1】:

浏览器会将数据编码为字符串。通常:

Delivery.HasShippingAddress=true&Delivery.HasShippingAddress=false

服务器上发生的事情取决于您的表单处理库。通常它会解码according to this spec。然后它将数据呈现给程序员。

有些会显示一组值。有些会只显示其中一个值。根据您调用的函数,有些可能会这样做。

【讨论】:

  • 所以没有关于如何处理这些的标准?
  • There is,但这并不能阻止 PHP(至少)丢弃一些数据。
  • 哦,太好了。请将此编辑为您的答案,我会接受。
猜你喜欢
  • 2015-07-28
  • 2017-03-17
  • 2011-02-09
  • 2012-10-15
  • 1970-01-01
  • 2010-09-13
  • 2011-01-18
  • 2016-07-10
  • 1970-01-01
相关资源
最近更新 更多