登录表单codeigniter表单验证显示另一个登录表单

时间:2015-04-09 05:41:29

标签: php forms codeigniter validation

我有以下代码用于验证登录表单,

 public function index(){
            //Check weather session exist or not!
            if(($this->session->userdata('user_email') != ""))
                {
                    if(($this->session->userdata('is_admin') == "Yes"))
                        {
                        redirect('admin/home'); 
                        }
                        elseif(($this->session->userdata('is_manager') == "Yes"))
                        {
                            redirect('manager/home');   
                            }
                    else
                        {
                            redirect('user/home');  
                        }
                }
            else
                {
                $this->load->view('view_login');
                }

    //If not exists then get login post request
    if ($this->input->post('login')) 
    {
        $this->form_validation->set_rules('username', 'User Name', 'trim|required|xss_clean|valid_email');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('view_login');
            } 
            else {

                $username = $this->input->post('username');
                $password = md5($this->input->post('password'));
                $user_count = $this->login_model->user_count($username,$password);  

                if($user_count == 1)
                        {
                            // If there is a user, then check enable status
                            $row = $this->login_model->user_data($username,$password);

                                if($row->user_status == "Enable")
                                    {
                                        $_userdata = array(
                                            'user_id' => $row->user_id,
                                            'user_email' => $row->user_email,
                                            'user_firstname' => $row->user_firstname,
                                            'user_lastname' => $row->user_lastname,
                                            'user_image' =>$row->user_image,
                                            'is_admin' => $row->is_admin,
                                            'is_manager' => $row->is_manager,
                                            'user_tz' =>$row->tz_name,
                                            'logged_in' => true
                                            );

                                        $this->session->set_userdata($_userdata);
                                        //Now check user type weather admin or user then move to respected page
                                            if($row->is_admin == "Yes")
                                                {
                                                redirect('admin/home');
                                                }
                                                elseif($row->is_manager == "Yes")
                                                {
                                                    redirect('manager/home');
                                                    }
                                            else 
                                                {
                                                redirect('user/home');
                                                }   


                                    }
                                    else
                                            {
                                                $error = array(
                                                            'error_message' => 'User Name is Disabled'
                                                            );
                                                $this->load->view('view_login', $error); // Manager Disables

                                            }
                        }
                    else
                        {
                                    $data1 = array(
                                            'error_message' => 'Wrong Username or Password'
                                                );
                                    $this->load->view('view_login', $data1); //Wrong user pw
                        }

                }
        }
}

我在这里做的是当索引加载时,检查天气是否存在任何会话,如果是,则只需重定向到用户的主页, 如果不存在会话,则加载登录视图页面

然后用户输入用户名和PW,然后表单验证完成, 如果失败,再次加载视图页面,此页面将显示CI表单验证错误,

问题是,当验证失败时,我在视图上获得两个登录表单,意味着一个用于登录的登录表单和另一个带有CI验证错误的登录表单,

如果CI发送验证错误,我怎么才能获得1个登录表单? 我的猜测是我在第2页加载view_login,但不知道如何防止这种情况!

谢谢,

2 个答案:

答案 0 :(得分:0)

您可以从else部分删除加载view_login语句,并将其另外放入$ this-> input-> post(' login'),如下所示:

    if ($this->input->post('login')) 
    {
          ........ 
          ........
    } else {
          $this->load->view('view_login');
    }

答案 1 :(得分:0)

Try this and let me know.   
 <?php
     function index(){
                //Check weather session exist or not!
                if(($this->session->userdata('user_email') != ""))
                    {
                        if(($this->session->userdata('is_admin') == "Yes"))
                            {
                            redirect('admin/home'); 
                            }
                            elseif(($this->session->userdata('is_manager') == "Yes"))
                            {
                                redirect('manager/home');   
                                }
                        else
                            {
                                redirect('user/home');  
                            }
                    }


        //If not exists then get login post request
        else if ($this->input->post('login')) 
        {
            $this->form_validation->set_rules('username', 'User Name', 'trim|required|xss_clean|valid_email');
            $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');

            if ($this->form_validation->run() == FALSE) {
                $this->load->view('view_login');
                } 
                else {

                    $username = $this->input->post('username');
                    $password = md5($this->input->post('password'));
                    $user_count = $this->login_model->user_count($username,$password);  

                    if($user_count == 1)
                            {
                                // If there is a user, then check enable status
                                $row = $this->login_model->user_data($username,$password);

                                    if($row->user_status == "Enable")
                                        {
                                            $_userdata = array(
                                                'user_id' => $row->user_id,
                                                'user_email' => $row->user_email,
                                                'user_firstname' => $row->user_firstname,
                                                'user_lastname' => $row->user_lastname,
                                                'user_image' =>$row->user_image,
                                                'is_admin' => $row->is_admin,
                                                'is_manager' => $row->is_manager,
                                                'user_tz' =>$row->tz_name,
                                                'logged_in' => true
                                                );

                                            $this->session->set_userdata($_userdata);
                                            //Now check user type weather admin or user then move to respected page
                                                if($row->is_admin == "Yes")
                                                    {
                                                    redirect('admin/home');
                                                    }
                                                    elseif($row->is_manager == "Yes")
                                                    {
                                                        redirect('manager/home');
                                                        }
                                                else 
                                                    {
                                                    redirect('user/home');
                                                    }   


                                        }
                                        else
                                                {
                                                    $error = array(
                                                                'error_message' => 'User Name is Disabled'
                                                                );
                                                    $this->load->view('view_login', $error); // Manager Disables

                                                }
                            }
                        else
                            {
                                        $data1 = array(
                                                'error_message' => 'Wrong Username or Password'
                                                    );
                                        $this->load->view('view_login', $data1); //Wrong user pw
                            }

                    }
            } else
                    {
                    $this->load->view('view_login');
                    }
    }
相关问题