在 name 属性中使用双括号 [] 发送输入类型复选框是否安全?
Is it safe to send input type checkbox using double bracket [] in the name attribute?
一些教程告诉我使用带双括号的复选框,这样值可以作为数组检索,但一些教程不是。
<input type='checkbox' name='hobby[]' value='reading'> Reading
哪个标准?在 name 属性中使用双括号 [] 发送输入类型复选框真的安全吗?
这种方法的唯一目的是在 PHP(可能还有一些其他服务器端语言)中使用多维 $_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(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)
一些教程告诉我使用带双括号的复选框,这样值可以作为数组检索,但一些教程不是。
<input type='checkbox' name='hobby[]' value='reading'> Reading
哪个标准?在 name 属性中使用双括号 [] 发送输入类型复选框真的安全吗?
这种方法的唯一目的是在 PHP(可能还有一些其他服务器端语言)中使用多维 $_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(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)