我最近从Dreamweaver切换到了Netbeans,并且由于内置了清晰代码的责任,我意识到我在编写正确/干净的代码方面还有一些工作要做。
目前,我正在尝试直接调整访问SuperGlobals(例如$ _POST)。对于这个问题,具体来说,我试图弄清楚如何处理暂时取消设置SuperGlobal变量。
$sampleArray = ["Designer_Name" => "someName",
"Designer_Key" => "someName's UID",
"Designer_Store" => "someStoreName",
"Group_Name" => "someGroupName",
"Dropbox_Key" => "someUID"
];
通常情况下,我可能会这样做:
unset($_POST['Dropbox_Key']);
在这个特殊问题中,我试图使用少量代码。我知道我可以过滤/清理数组的每个元素并将其分配给变量,但由于$ _POST数组不是用户输入的,我不太关心它。
使用这个数组,我将整个数组插入到数据库表中,减去最后一个元素。我不需要'Dropbox_Key'作为与数组其余部分相同的表。我稍后会将该元素用于另一个表。
插入代码如下所示:
$insert = $dbs->insert('sometable', filter_input_array(INPUT_POST));
所以,我问的问题是,尽管忽略访问SuperGlobals的netbeans警告更容易,但是有一些当前/更清洁的方式来做我想要的事情(取消设置$ _POST元素),或忽略警告最好的方式去这里?
答案 0 :(得分:1)
我们在超级全局输入filter_input()
上使用$_POST
的原因是因为它往往是用户输入的数据,我们无法信任。通过过滤,我们可以对输入进行转义和清理,以帮助阻止XSS
(跨站点脚本编写)和SQL
注入。
如果在您自己的代码中取消设置超级全局,则不存在风险(您可以控制代码),因此我们可以直接取消设置unset($_POST['Dropbox_Key']);