关于ci中的表单提交问题

codeIgniter是一种PHP开源框架,它会自带一些表单验证的功能,安全过滤等等。

这里的验证字段对应的是网页中的表单,而不是数据库中的字段,这一点要认清楚了。可以通过

$this->load->library('form_validation');
来加载验证辅助函数,通过

$this->form_validation->set_rules('username', 'Username', 'required');
来对username进行验证,这里的username对应的是表单中的属性,而不是数据库中username。

if ($_POST) {
            //加载验证辅助函数
            $this -> load -> helper(array('form', 'url'));
            $this -> load -> library('form_validation');
            //对表单进行过滤验证处理
            $this->form_validation->set_rules('name', 'Name', 'trim|strip_tags|required|max_length[40]|xss_clean');
            $this->form_validation->set_rules('company', 'Company Name', 'trim|strip_tags|max_length[150]|xss_clean');
            $this->form_validation->set_rules('country', 'Country', 'trim|strip_tags|max_length[140]|xss_clean');
            $this->form_validation->set_rules('email', 'Email', 'trim|strip_tags|required|max_length[140]|xss_clean');
            $this->form_validation->set_rules('title', 'Title', 'trim|strip_tags|max_length[140]|xss_clean');
            $this -> form_validation -> set_rules('phone', 'Telephone', 'trim|strip_tags|max_length[40]|xss_clean');
            $this->form_validation->set_rules('desc', 'Message', 'trim|strip_tags|xss_clean');
            if ($this -> form_validation -> run() == FALSE) {
                  redirect($_SERVER['HTTP_REFERER']);
            } else {
                    //如果通过验证,将获取的数据保存
                    //获取过滤后的数据
                    $name = $this -> input -> post('name');
                    $company = $this -> input -> post('company');
                    $email = $this -> input -> post('email');
                    $phone = $this -> input -> post('phone');
                    $country = $this -> input -> post('country');
                    $title = $this -> input -> post('title');
                    $desc = $this -> input -> post('desc');
                    if (!$title) {
                        $title = "a new contact message has been arrived";
                    }
                $data = array('name' => $name, 'company_name' => $company,
                'email' => $email, 'country' => $country, 'title' => $title,
                 'tel' => $phone, 'message' => $desc);
                $this -> db -> insert('contact', $data);
                $this->session->set_flashdata('contact_success', 'your request has been sent successfully,
                we will contact you via email in a short time!');
                redirect($_SERVER['HTTP_REFERER']);
                

            }

上面的代码是对表单进行验证的代码,表单的字段与数据库字段有一点点区别,对其进行验证时,要以表单字段为基准。而且获取数据,要在验证之后获取,否则保存的数据库的信息,还是过滤之前的信息,比如有空格,比如有<br>等等。这是一个注意点。

要能够正确的理解表单验证的原理,编程的时候,才不会出错。今天验证电话时,我用的是数据库中的字段tel,而不是表单中的字段phone,结果怎么用都没有效果。非常苦恼。

posted @ 2012-06-29 17:20  TBHacker  阅读(6325)  评论(0编辑  收藏  举报