我的php文件接收带有未知数字键的$ _POST变量,例如键的textpart已知,但$ _POST变量的数量和数量是未知的.示例:$ _POST [name1],$ _POST [name2],$ _POST [address1],$ _ POST [address2].
我看到访问这些值的唯一方法是通过以下代码:
foreach($_POST as $k => $v){
if(strpos($k, 'name') === 0) {
//do something with $v
}
if(strpos($k, 'address') === 0) {
//do something with $v
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我的Netbeans然后发出警告'不要直接访问超全球$ _POST数组'.我查看了php过滤器输入函数(http://www.php.net/manual/en/function.filter-input.php),但找不到以安全的方式访问这些类型的$ _POST变量的方法.有什么建议?对于初学者(作为初学者的问题:),为什么直接访问$ _POST vars是不安全的做法?
使用可变数量的键作为输入时,您可以格式化您的html,使其看起来像:
<input type="text" name="multi_values[1]" />
<input type="text" name="multi_values[2]" />
Run Code Online (Sandbox Code Playgroud)
现在您可以像这样访问这些变量:
foreach($_POST['multi_values'] as $k => $v){
//do something with $k and $v
}
Run Code Online (Sandbox Code Playgroud)
此外,我可以想到NetBeans可能会抛出这样一个警告的两个原因:超级全局可以在迭代它们时进行变异(至少在支持并发的语言中),并且$_POST变量的内容不稳定/可能是恶意的,因为它受到请求的控制.用户/浏览器.也就是说,在PHP中你可以$_POST很好地遍历数组.只需始终检查并清理输入.
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |