2015-04-09 2 views
2

У меня есть ниже код для входа в форму с проверкой,Войти форма проверки формы CodeIgniter показать еще одна форма Войти

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,

Как я могу получить только 1 регистрационную форму, когда CI отправить Ошибка проверки? Я предполагаю, что я загружаю страницу просмотра_login 2 раза, но не знаю, как я могу это предотвратить!

Спасибо,

+0

Показать свой код. –

+0

Обновленный код – rjcode

ответ

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'); 
        } 
    } 
+0

Работал так, как я ожидал :-) – rjcode

0

Вы можете удалить заявление нагрузки view_login от части еще и положить, как еще за $ this->> вход-сообщение («Вход»), как показано ниже:

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

Если я удалю view_login из другой части, тогда контроллер не загрузит мой view_login, и у меня будет пустая страница, – rjcode

+0

В любом случае, наконец, этот просмотр загружает rt? –

+0

Да, он будет загружаться, но снова у меня есть две формы, у которых есть ошибки из CI-валидации. – rjcode

Смежные вопросы