在Codeigniter上,如果使用注册表单创建成员并将数据发送到模型成员中的插入方法,则如何过滤数据?
我正在寻找最好的MVC方法来做到这一点,因为我不想保存复选框"我同意..."的值,既不想保存安全问题的值,也不想保存此类内容。
在我的控制器中,可以执行(在发送到模型方法之前):
$posts = $this->input->post();
unset($posts['abcdef']);
...
但也可以在我的模型中执行此操作(在使用插入方法之前):
function insert($data){
unset($data['abcdef']);
...
}
那么,如何过滤数据呢?
您发布作品的两种方式 - 但它们是"黑名单"。
您应该在模型中使用"白名单"。这意味着您的模型将只查找所需的信息,并丢弃其余信息。这可以防止人们在您的表单中插入您意想不到的 $_POST 美元数据。
在模型中,我做了类似的事情
function insert($inputs)
{
$white_list = array ('field1', 'field2', ... ,'field9');
foreach ($inputs as $post_id => $input)
{
if ( ! in_array ($post_id, $white_list))
{
unset($inputs[$post_id]);
}
}
// Now insert data here and sleep easy at night
}