【问题标题】:php: read attribute from form elementphp:从表单元素中读取属性
【发布时间】:2011-05-14 11:20:48
【问题描述】:

是否可以从表单元素中读取属性?

我知道了:

<input class="number required" min="1250" max="999999999" id="insert_counter1" name="my_counter" value="" type="text">

提交后,我可以访问该值。但是有什么方法可以获取“min”或“max”等其他属性?

现在我有一个名为 my_counter_min 的隐藏只读输入字段,其中存储了“min”属性。我不知道这是否是一个循环工作,或者它实际上是否是唯一的方法。

兄弟。安德斯

根据以下答案更新:

感谢您的反馈。当我阅读答案时,有三个很好的解决方案,各有利弊。

  • 在输入类型=隐藏中存储值。容易做,但可以被篡改
  • 使用解析器。编码需要更多时间,但原始值将通过新的 Web 请求获取。所以没有篡改
  • 在数据库中存储价值。如果表单与数据库中的特定 rcord 相关,则存储额外的值可以产生良好的效果,并且如果其他值必须完全进出数据库(只需添加一个值),则不会花费大量的编码工作。

我的问题得到了三个不同的答案。最快的答案标记为正确,即使有不止一个解决方案。

BR。安德斯

【问题讨论】:

    标签: php html forms custom-attributes


    【解决方案1】:

    没有。只有名称和值会到达服务器,因此您需要一种解决方法(就像您描述的那样)。

    【讨论】:

      【解决方案2】:

      我不知道这是否是一个循环工作,或者它实际上是否是唯一的方法。

      这是唯一的好方法。表单元素的其他属性不会在请求中传递。

      【讨论】:

        【解决方案3】:

        它们不会被传输,但您可以使用an HTML parser 加载页面并提取值。

        最大的问题是,您为什么要这样做?如果你想使用 min/max 来确保提交的值在这个范围内,你应该在服务器端对这些值进行硬编码,而不是依赖于以某种方式从客户端获取它们。

        将该范围作为隐藏字段传递是没有意义的,因为它很容易被篡改。使用解析器拉取它们可确保它们不会被篡改,但会增加第二次请求的开销。

        【讨论】:

        • 我也想过这个,但在大多数情况下,这并不是一个真正的方式 IMO
        • @Pekka 是什么让你这么想?添加隐藏字段意味着添加混乱并且它们很容易被篡改。推动或拉动它们是一种的方式,取决于 OP 需要这些值的目的。如果她/他使用它们来确保价值在这些边界内,那么拉动它们会更好。当然,另一个问题是为什么它们首先必须来自 UI。 最好的方法是从一开始就在服务器端进行所有必要的表单验证,既不推送也不拉取它们。
        • 是的,但是请求获取原始页面?我不知道。取决于用例,我猜。
        • @Pekka 如果我必须在附加请求或篡改数据之间进行选择,我会选择附加请求。数据完整性比性能更重要。不过请参阅我的更新。
        • 嗯,这是一个有效的替代方案。 +1
        【解决方案4】:

        有趣。我曾经遇到过同样的问题,并以与您相同的方式解决了它。从来没有真正回顾过这个问题。

        我能想到的一件事是将值存储在数据库中,因此您可以: 1. 将它们用作输入变量。 2. 随时访问。

        Ps:最初这是一个评论,但看到你接受替代方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-30
          • 1970-01-01
          • 2011-04-30
          • 2017-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多