从字面上回答这个问题,我所知道的命名确实没有“规则”$_POST
and $_GET
php.ini 中的数组键它是一个像其他数组一样的数组。看一眼键盘上的这个工作示例 http://codepad.org/rPv4KxG1:
<?php
$_POST['♠♣♥♦'] = 'value1';
$_POST['\'\'\'\''] = 'value2';
$_POST['<?php echo "Hello World"; ?>'] = 'value3';
$_POST[' '] = 'value4';
$_POST[''] = 'value5';
$_POST['@#$%^&*()'] = 'value6';
print_r($_POST);
对于表单输入名称,它们只需是合法的 HTML“名称”属性(见下文)。然而,在实践中,许多不寻常的字符实际上会起作用。请记住,这并不意味着这是一个好主意。不同的服务器(可能还有不同的浏览器)对于某些字符(例如空格)的行为会有所不同。
As Tadeck https://stackoverflow.com/questions/5943957/rules-for-naming-post-get-variables/5944013#5944013已经注意到,读取时重复的键将被最后一个键覆盖,但使用brackets[]
将在客户端通过将变量转换为数组来解决这个问题。
至于命名约定和最佳实践,没有太多空间。建议您坚持使用 A-Z a-z 0-9、破折号和下划线。虽然Ajay https://stackoverflow.com/questions/5943957/rules-for-naming-post-get-variables/5944174#5944174为了方便起见,建议使用数据库列名称作为表单输入名称,许多人会告诉您,向公众公开有关数据库的信息是不好的做法。我认为倒λ https://stackoverflow.com/questions/5943957/rules-for-naming-post-get-variables/5947488#5947488这里可能有最接近问题的答案,并且Tadeck https://stackoverflow.com/questions/5943957/rules-for-naming-post-get-variables/5944013#5944013就最佳实践而言,有最接近的答案。
关于 HTML“名称”属性:http://www.w3.org/TR/html4/types.html#h-6.2 http://www.w3.org/TR/html4/types.html#h-6.2
ID and NAME标记必须以字母 ([A-Za-z]) 开头,后面可以跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_")、冒号 ( “:”)和句点(“.”)。
也许有人可以启发我,上述文件是规则还是建议,我绝不是这个问题的专家。在实践中,我似乎对违反其中一些规则没有任何问题。我也可以将这个示例文档验证为严格的 XHTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
</head>
<body>
<div><form action="" method="post">
<div>
<input name="♠♣♥♦" />
<input name="''''" />
<input name=")(&#$)%#$%" />
</div>
</form>
</div>
</body>
</html>
将其粘贴到验证者 http://validator.w3.org/#validate_by_input, 会过去的。
要添加的另一个最佳实践是:使您的表单输入名称或 get/post 键有意义,当然就像所有其他命名约定一样。不要使用input1
and $_GET['param']
。使用描述含义的名称,例如last_name
or $_GET['sort_order']
.