Php 在CodeIgniter中插入方法之前如何过滤数据?

Php 在CodeIgniter中插入方法之前如何过滤数据?,php,codeigniter,filtering,Php,Codeigniter,Filtering,在Codeigniter上,如果您使用注册表单创建成员并将数据发送到模型成员中的插入方法,那么如何过滤数据 我正在寻找最好的MVC方法来实现这一点,因为我不想保存复选框“我同意…”的值,也不想保存安全问题的值或此类内容 在我的控制器中,可以(在发送到模型方法之前)执行以下操作: 但在我的模型中也可以这样做(在使用插入方法之前): 那么,您如何过滤数据呢?您发布数据的两种方式都有效,但它们都是“黑名单” 您应该在模型中使用“白名单”。这意味着您的模型将只查找其需要的信息,而丢弃其余的信息。这将防止

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

我正在寻找最好的MVC方法来实现这一点,因为我不想保存复选框“我同意…”的值,也不想保存安全问题的值或此类内容

在我的控制器中,可以(在发送到模型方法之前)执行以下操作:

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


那么,您如何过滤数据呢?

您发布数据的两种方式都有效,但它们都是“黑名单”

您应该在模型中使用“白名单”。这意味着您的模型将只查找其需要的信息,而丢弃其余的信息。这将防止人们在您的表单中插入您不期望的附加$\u 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
 }
function insert($data){
unset($data['abcdef']);
...
}
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
 }