我看过很多处理表单输入的PHP代码,其中输入字段名称包含方括号。我知道当PHP脚本检查$ _POST变量时,这会以某种方式导致PHP数组。
HTML示例:
<form action='http://zzz.com' method='post'> <input name='fruit[1]' value='apple' /> <input name='fruit[2]' value='banana' /> </form>
范例网址:
http://zzz.com?fruit[1]=apple&fruit[2]=banana
示例PHP:
assert($_POST['fruit'] === array(1=>'apple', 2=>'banana'));
我对此的疑问:
其背后的机制是什么?这些包含方括号的名称在什么时候转换为数组?这是HTTP协议的功能吗?Web服务器?PHP语言的?
继续前面的问题,这是常用的黑客工具还是普通的编程工具?
在输入字段名称中使用括号的规则(全部)是什么?
可以通过这种方式创建多维数组吗?
背后的机制是什么?在什么时候这个仅包含方括号的名称将转换为数组?这是HTPP协议的功能吗?Web服务器?是PHP语言吗?
这是PHP语言的功能。实际上,HTTP协议并不禁止使用多个相同的GET / POST参数。根据HTTP规范,以下内容:
foo=bar&foo=baz
不应导致foo == baz。这是两个具有两个不同值的参数。但是,PHP会foo用最新的结果()覆盖前者$_POST['foo'] == 'baz',即使它们可以单独解析也是如此。
foo == baz
foo
$_POST['foo'] == 'baz'
这取决于观点。在PHP世界中,这是完全正常的,因为该语言不使用括号不支持指定相同名称的多个参数[]。在HTTP世界中,foo != foo[]。
[]
foo != foo[]
在输入字段名称中使用方括号的(全部)规则是什么?
与PHP数组相同,除了不必引用字符串键。
是的你可以。