【问题标题】:Is it safe to send input type checkbox using double bracket [] in the name attribute?在名称属性中使用双括号 [] 发送输入类型复选框是否安全?
【发布时间】:2015-04-26 01:58:07
【问题描述】:

一些教程告诉我使用带双括号的复选框,以便可以将值作为数组检索,但有些教程不是。

<input type='checkbox' name='hobby[]' value='reading'> Reading

哪一种标准?在名称属性中使用双括号 [] 发送输入类型复选框实际上是否安全?

【问题讨论】:

标签: html forms checkbox


【解决方案1】:

这种方法的唯一目的是在 PHP(可能还有其他一些服务器端语言)中使用多维 $_GET 数组。

方法№1:无括号

我们大部分时间使用它的方式。提供这样您就可以看到这种方法与其他两种方法之间的区别。

<label>
    <input type="checkbox" name="hobby_reading" value="1" /> Reading
</label>

<label>
    <input type="checkbox" name="hobby_programming" value="1" /> Programming
</label>

var_dump($_GET) 输出:

array(2) {
    ["hobby_reading"] => string(1) "1"
    ["hobby_programming"] => string(1) "1"
}

方法№2:括号中的名称

为我们提供一个嵌套的关联 hobby 数组作为 $_GET 数组的成员。

<label>
    <input type="checkbox" name="hobby[reading]" value="1" /> Reading
</label>

<label>
    <input type="checkbox" name="hobby[programming]" value="1" /> Programming
</label>

var_dump($_GET) 输出:

array(1) {
    ["hobby"] => array(2) {
        ["reading"] => string(1) "1"
        ["programming"] => string(1) "1"
    }
}

方法№3:双括号

为我们提供一个嵌套的非关联hobby 数组作为$_GET 数组的成员。

<label>
    <input type="checkbox" name="hobby[]" value="reading" /> Reading
</label>

<label>
    <input type="checkbox" name="hobby[]" value="programming" /> Programming
</label>

var_dump($_GET) 输出:

array(1) {
    ["hobby"] => array(2) {
        [0] => string(7) "reading"
        [1] => string(11) "programming"
    }
}

回答您的问题

是的。使用这种方法是安全的,但在尝试使用 vanilla JavaScript 或 jQuery 按名称获取输入 DOM 元素时可能会遇到一些问题(这里是如何解决 jQuery 的问题:jQuery selector for inputs with square brackets in the name attribute

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多