首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确取消超全局变量

正确取消超全局变量
EN

Stack Overflow用户
提问于 2017-04-28 23:40:47
回答 1查看 828关注 0票数 2

最近,我从Dreamweaver转向了Netbeans,随着对干净代码的内置问责,我意识到我在编写正确/干净的代码方面还有一些工作要做。

目前,我正试图从直接访问SuperGlobals (如$_POST)中进行调整。具体来说,对于这个问题,我试图弄清楚如何暂时撤消SuperGlobal变量。

代码语言:javascript
复制
$sampleArray = ["Designer_Name" => "someName",
            "Designer_Key" => "someName's UID",
            "Designer_Store" => "someStoreName",
            "Group_Name" => "someGroupName",
            "Dropbox_Key" => "someUID"
            ];

通常,我可能会做这样的事情:

代码语言:javascript
复制
unset($_POST['Dropbox_Key']);

在这个特殊的问题中,我试图使用短数量的代码。我知道我可以过滤/净化数组的每个元素,并将其赋值给一个变量,但是由于$_POST数组不是用户输入,所以我不太关心这个问题。

使用这个数组,我将把整个数组插入到一个数据库表中,减去最后一个元素。对于与数组的其他部分相同的表,我不需要“Dropbox_Key”。稍后,我将在另一个表中使用该元素。

插入代码如下所示:

代码语言:javascript
复制
$insert = $dbs->insert('sometable', filter_input_array(INPUT_POST));

因此,我要问的问题是,尽管忽略netbeans关于访问SuperGlobals的警告比较容易,但是否有什么当前/更干净的方法来实现我的意愿(取消$_POST元素),还是忽略警告是这里的最佳方式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 23:47:15

我们在超级全局输入上使用filter_input()的原因就像$_POST一样,因为它往往是用户输入的数据,我们无法信任。通过过滤,我们可以转义和净化输入,以帮助防止XSS (跨站点脚本)和SQL注入。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43690266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档