正确取消设置超全局变量
Unsetting Superglobal Variable Properly
我最近从 Dreamweaver 切换到 Netbeans,并且由于对干净代码的内置责任,我意识到我在编写 proper/clean 代码方面还有一些工作要做。
目前,我正在尝试从直接访问 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']);
在这个特定问题中,我尝试使用少量代码。我知道我可以 filter/sanitize 数组的每个元素并将其分配给一个变量,但是由于 $_POST 数组不是用户输入的,所以我不太关心这个。
对于这个数组,我会将整个数组插入数据库 table,减去最后一个元素。对于与数组其余部分相同的 table,我不需要 'Dropbox_Key'。我稍后会将该元素用于另一个 table.
插入代码如下所示:
$insert = $dbs->insert('sometable', filter_input_array(INPUT_POST));
所以,我要问的问题是,尽管忽略访问 SuperGlobals 的 netbeans 警告更容易,但是否有一些 current/cleaner 方法可以实现我的意图(取消设置 $_POST 元素) ,还是忽略警告是前往此处的最佳方式?
我们在超级全局输入(如 $_POST
)上使用 filter_input()
的原因是因为它往往是我们无法信任的用户输入数据。通过过滤,我们可以转义和清理输入以帮助防止 XSS
(跨站点脚本)和 SQL
注入。
如果在您自己的代码中取消设置超级全局,则不会带来任何风险(您可以控制您的代码),因此我们可以安全地直接取消设置 unset($_POST['Dropbox_Key']);
我最近从 Dreamweaver 切换到 Netbeans,并且由于对干净代码的内置责任,我意识到我在编写 proper/clean 代码方面还有一些工作要做。
目前,我正在尝试从直接访问 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']);
在这个特定问题中,我尝试使用少量代码。我知道我可以 filter/sanitize 数组的每个元素并将其分配给一个变量,但是由于 $_POST 数组不是用户输入的,所以我不太关心这个。
对于这个数组,我会将整个数组插入数据库 table,减去最后一个元素。对于与数组其余部分相同的 table,我不需要 'Dropbox_Key'。我稍后会将该元素用于另一个 table.
插入代码如下所示:
$insert = $dbs->insert('sometable', filter_input_array(INPUT_POST));
所以,我要问的问题是,尽管忽略访问 SuperGlobals 的 netbeans 警告更容易,但是否有一些 current/cleaner 方法可以实现我的意图(取消设置 $_POST 元素) ,还是忽略警告是前往此处的最佳方式?
我们在超级全局输入(如 $_POST
)上使用 filter_input()
的原因是因为它往往是我们无法信任的用户输入数据。通过过滤,我们可以转义和清理输入以帮助防止 XSS
(跨站点脚本)和 SQL
注入。
如果在您自己的代码中取消设置超级全局,则不会带来任何风险(您可以控制您的代码),因此我们可以安全地直接取消设置 unset($_POST['Dropbox_Key']);