php检查发送的$ _POST是否允许字段

时间:2014-12-13 10:09:52

标签: php arrays validation post

我正在编写代码来验证所有$ _POST变量都在'允许'列表中以防止黑客攻击。

这个想法是,如果我在一个表单中有4个字段,并且有人发送了一个额外的post变量,则会显示错误。

我的第一个问题是:这有用吗?

这是我的PHP代码,用于检查发送的帖子,但我不知道为什么它不起作用:

$allowed = array(
    'field1',
    'field2',
    'select1',
    'textarea1',
    'submit_button'
);

foreach($_POST as $k => $v) { 
    if(!array_key_exists($k, $allowed)) {
        die('error with field: '.$k);
    }
}

1 个答案:

答案 0 :(得分:1)

使用in_array代替array_key_exists

$allowed = array(
    'field1',
    'field2',
    'select1',
    'textarea1',
    'submit_button'
); 
foreach($_POST as $k => $v) { 
    if(!in_array($k, $allowed)) {
        die('error with field: '.$k);
    }
}

这可能很有用,但您仍应对收到的表单进行真实验证。