正确取消超全局变量

时间:2017-04-28 23:40:48

标签: php post unset

我最近从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元素),或忽略警告最好的方式去这里?

1 个答案:

答案 0 :(得分:1)

我们在超级全局输入filter_input()上使用$_POST的原因是因为它往往是用户输入的数据,我们无法信任。通过过滤,我们可以对输入进行转义和清理,以帮助阻止XSS(跨站点脚本编写)和SQL注入。

如果在您自己的代码中取消设置超级全局,则不存在风险(您可以控制代码),因此我们可以直接取消设置unset($_POST['Dropbox_Key']);