0

不太确定如何命名这个问题,但它就在这里。我总是使用 CodeIgntier 的表单验证类来验证我的表单信息。在我的申请中,有其他注册成员使用的表格。例如,如果有人想对博客文章发表评论,他们可以使用该文章的表单。

如果我的控制器是:

类博客扩展 CI_Controller {

     功能 postcomment($blog_id){

          if($this->form_validation->run('comment') == FALSE){

               $this->parser->parse('comment_form.tpl', $data);

          } 别的 {

               $this->blog_post->create_comment($blog_id);

          }

     }

}

我的模型是...

类 Blog_Post 扩展 CI_Model {

     函数 create_comment($blog_id){

         $数据 = 数组(
               'title' => $this->input->post('title'),
               'content' => $this->input->post('content'),
               '日期' => 时间()
              );

          $this->db->insert('blog_comments', $data);

     }

是否需要使用 preg_match、strlen、isset 等在实际插入信息之前对其进行验证?

4

3 回答 3

0

这取决于您的需求,而 CIform validation确实提供了regex,unique,max_length,isset .. etc验证。

如果您有任何自定义验证,例如计算或百分比>而不是为此输入编号,它还提供callback验证总计的功能,具体取决于您的需要

一些主要的验证规则是

级联规则

准备数据

回调

这是您需要通过form_validation的所有内容

于 2013-06-27T08:09:30.207 回答
0

甚至 Codeigniter 也已经实现了安全性。执行以下操作仍然是最佳实践;

  1. 过滤数据,就像它被污染一样。(使用 xss 过滤)
  2. 验证数据以确保其符合正确的类型、长度、大小等(有时这一步可以代替第一步)
  3. 在将数据提交到数据库之前转义数据。

我在这里读到了http://ellislab.com/codeigniter/user-guide/general/security.html

于 2013-06-27T08:12:58.927 回答
0

但是,如果您之前使用 form_validation 验证插入邮寄发送的数据

我应该启用 XSS 吗?

$this->input->post('any_input', TRUE);

//campos de la tabla y datos a insertar
                $dataUsuario = array(
                            'matr_user'         => 'guest-'.date("whis"),//hora-min-seg-dia
                            'pass_user'         => $passHash,
                            'nom_user'          => capitalizar($this->input->post('tx_nom')),
                            'ap_user'           => capitalizar($this->input->post('tx_ap')),
                            'am_user'           => capitalizar($this->input->post('tx_am')),
                            'sex_user'          => $this->input->post('tx_sex'),
                            'nomfull'           => $nom_completo,
                            'fnaci_user'        => $this->input->post('tx_naci'),
                            'curp_user'         => $this->input->post('tx_curp'),
                            'callenum_user'     => capitalizar($this->input->post('tx_calle')),
                            'col_user'          => capitalizar($this->input->post('tx_col')),
                            'cp_user'           => $this->input->post('tx_cp'),
                            'ciud_user'         => capitalizar($this->input->post('tx_city')),
                            'estad_user'        => capitalizar($this->input->post('tx_estado')),    
                            'fech_ins_user'     => $this->fecha_server(),
                            'time_ins_user'     => $this->hora_server(),
                            'ip_ins_user'       => $this->ip_usuario(),
                            'operador_ins_user' => $this->session->userdata('username'),
                            'fech_upd_user'     => '0000-00-00',
                            'time_upd_user'     => '00:00:00',
                            'ip_upd_user'       => '0',
                            'operador_upd_user' => 'sinuser'
                        );

                //inicia transacciones
                $this->db->trans_start();

                //insertamos datos
                //llamamos al metodo del modelo que realiza las inserciones                 
                $consulta_idUser = $this->usuario->create_usuario($dataUsuario);
于 2013-09-17T08:35:31.470 回答