我见过人们(通常会写出好的代码)直接$_POST
使用如下代码更改数组:
// Add some value that wasn't actually posted
$_POST['last_activity'] = time();
// Alter an existing post value
$_POST['name'] = trim($_POST['name']);
// Our pretend function
// Pass the entire $_POST array as data to work with in the function
// The function update_record() will read only the values we actually need
update_record($_POST);
// ...That sure was easier than creating a new array
// with only the $_POST values we actually need.
有意义的是,update_record()
不应直接访问$ _POST,因此我们可以例如将其他数据数组传递给它,但是可以肯定这是惰性的,不良的设计,或者可能只是错误的?但是,我们仍然将有效数组传递给update_record()
,那么为什么要创建一个新数组呢?
这不是问题的重点,只是用法的一个示例。但是,我听到很多人说不应使用$_REQUEST
数据来完成此操作,这是不好的做法。但为什么?看起来足够无害。
例子:
设置一个
$_GET
实际上不存在的默认(或发布)值添加
$_POST
表单提交后实际上未发布的值很早就在脚本中直接清理或过滤
$_GET
数组值或键(后备清理...为什么不呢?)$_POST
在表单提交之前手动设置一个值,以使用默认值填充输入(当输入读取$_POST
它的默认值时;我已经这样做了)建立自己的
$_SERVER
价值观?当然,为什么不呢?其他人,例如
$_COOKIE
和$_SESSION
怎么样?当然我们必须直接修改那些对不对?那为什么不其他呢?
应该永远不要直接修改超全局变量 ,还是在某些情况下可以这样做?