0

在 Codeigniter 上,如果您使用注册表单创建成员并将数据发送到模型成员中的插入方法,您如何过滤数据?

我正在寻找最好的 MVC 方法来做到这一点,因为我不想保存复选框“我同意...”的值,也不想保存安全问题的值或此类事情。

在我的控制器中,可以这样做(在发送到模型方法之前):

$posts = $this->input->post();
unset($posts['abcdef']);
...

但也可以在我的模型中做到这一点(在使用插入方法之前):

function insert($data){
unset($data['abcdef']);
...
}

那么,如何过滤数据呢?

4

1 回答 1

1

您发布工作的两种方式 - 但它们是“黑名单”。

您应该在模型中使用“白名单”。这意味着您的模型将只寻找它想要的信息,并丢弃其余的信息。这可以防止人们将附加的 $_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
 }
于 2012-06-08T16:47:36.420 回答