CodeIgniter-哪个文件可用于预处理/净化/操作输入数据?

CodeIgniter-哪个文件可用于预处理/净化/操作输入数据?,codeigniter,codeigniter-2,Codeigniter,Codeigniter 2,我对CodeIgniter非常陌生,我有一个关于准备/净化/操作输入字段的问题。当我说“准备/净化/操作”字段时,我的意思是: 如果用户未输入整数字段(留空),如果用户单击“提交”,则应将其设置为空。例如,$this->input->post('integer_field')应为NULL,而不是“”(空字符串),以便在将数据保存到数据库时不会导致任何MySQL错误 例如,表单允许您设置屏幕名称、更改密码(仅当您输入新密码并确认新密码时)。提交此表单而不更改密码时,$this->input->po

我对CodeIgniter非常陌生,我有一个关于准备/净化/操作输入字段的问题。当我说“准备/净化/操作”字段时,我的意思是:

  • 如果用户未输入整数字段(留空),如果用户单击“提交”,则应将其设置为空。例如,$this->input->post('integer_field')应为NULL,而不是“”(空字符串),以便在将数据保存到数据库时不会导致任何MySQL错误

  • 例如,表单允许您设置屏幕名称、更改密码(仅当您输入新密码并确认新密码时)。提交此表单而不更改密码时,$this->input->post('password')和$this->input->post('password_confirm')都将为“”(空字符串)。所以很明显,当使用模型保存到数据库时,这两个字段不应该插入到数据库中,它们都需要取消设置

  • 因此,我试图找出执行上述任务的最佳位置,我认为config/form_validation.php将是执行上述任务的最佳位置(form_validation可以验证字段和准备字段。另外,我不想调用form_validation->run in controller,而是想将所有验证放在一个地方,这样就可以配置/form_validation.php),但是我有几个问题:

    • 根据我对system/library/Form#u validation.php的理解,如果任何字段为空且不是“必需”字段,则不会对其调用规则。那么,如果不需要整数字段,我如何执行#1呢

    • 对于#2,我想我需要使用“回调”来取消设置$this->input->post('password')和$this->input->post('password#confirm'),但是,它会不会搞乱Form_validation.php中的任何代码

    另外,如果您认为config/form_validation.php不是一个合适的文件,那么应该使用哪个文件来准备/净化/操作字段

     $integer_field = $this->input->post(‘integer_field’, TRUE) ; 
    
     if ( $integer_field == '') { $integer_field = NULL ;  } 
    

    为验证规则配置很好,但是--首先让表单工作,然后在知道其工作时重构。我更喜欢在模型中进行表单验证。我还建议使用单独的方法为插入或更新构建特定数组。然后,您可以使用非常简单的插入和更新方法e任意数组。

    当你说在模型中进行表单验证时,你的意思是将“$this->form\u validation->run()放入“在模型中?这也适用于字符串。我想true只会清理xss脚本的数据??Josh-是的,它可以在方法中的模型中运行-然后例如让该方法返回true或false。然后在控制器中调用该方法,如:IF($this->users->\u validateLoginForm()==false){$this->\u showLoginForm()}否则…所有表单字段等都保留在模型中,并且控制器保持非常干净。模型方法必须使用下划线的原因(例如,_validateLoginForm()而不是validateLoginForm())?我认为在控制器中,有时我们必须将其设置为下划线,以防止用户直接调用控制器方法。但为什么在模型中设置下划线?嘿,josh-感谢您询问模型方法名称中的下划线。这实际上是我的一个坏习惯——我已经开始更改它,因为您指出了这一点。