Хотите войти, используя электронную почту и мобильный телефон в codeigniter - PullRequest
0 голосов
/ 13 января 2020

Контроллер:

public function index(){
  $this->load->helper(array('form', 'url','common'));
  $this->load->library(array('form_validation','session'));
      $data=array(   
         'header' => $this->load->view('frontend/assets/header', '', TRUE),  
         'footer' => $this->load->view('frontend/assets/footer', '', TRUE),
      );    
      $this->form_validation->set_rules('email', 'email', 'trim|required');
      $this->form_validation->set_rules('password', 'Password', 'trim|required');    
      $this->load->model('usermodel','usermodel',TRUE); 

      $form_post_data = $_POST;
      // print_r($form_post_data);exit;
      $email = $form_post_data['email'];
      $password = $form_post_data['password'];

      // $mobile = $form_post_data['mobile'];

      if(count($form_post_data) >0)
      {      


            if ($this->form_validation->run() == FALSE)
            {
                $this->load->view('frontend/index',$data);
            }
            else
            {       

                $user_data  = $this->usermodel->checklogin($email,$password);   
                   var_dump($user_data);exit;
                if(count($user_data) > 0)     
                {
                      $this->session->set_userdata('sess_user_id', $user_data->id);
                      $this->session->set_userdata('sess_user_email', $user_data->email);
                      $this->usermodel->update_last_login_date();
                     echo "<script>
                    alert('Login Successfull.');
                      window.location.href = '" . base_url() . "profile';
                      </script>";
                }
                else 
                {
                  $this->session->set_flashdata('err_msg', 'email or password is invalid please try again');
                  echo "<script>
                  alert('Email and Password is wrong.');
                    window.location.href = '" . base_url() . "home';
                    </script>";
                }
             } 
         }
         else {
            $this->load->view('frontend/user/login',$data);
         }

    }

Модель:

 function checklogin($email,$password)
    {

      // unset($data['sbt']);
      $sha_password = md5($password);
      // print_r($email);
      // print_r($sha_password);exit;
      $this->db->select('*');
      $this->db->from('user');
      $this->db->where('email', $email)
      // $this->db->where("status","live")
      ->group_start()
      ->or_where('mobile', $email)
      ->group_end();
      $this->db->where('password', $sha_password);
      $query = $this->db->get(); 
      return $query->row();

    }

Просмотр:

 <form action="<?php echo base_url();?>user" method="POST" autocomplete="off">
                      <div class="field">
                        <input type="text" name="email" id="email" placeholder="E-mail or Phone">
                        <label for="email">E-mail</label>
                      </div>
                      <div class="field">
                        <input type="password" name="password" id="password" placeholder="password">
                        <div toggle="#password-field" class="fa fa-fw fa-eye field-icon toggle-password" id="log_pass" ></div>
                        <label for="password">password</label>
                      </div>

                      <button type="submit" name="sbt" class="modal__form_btn">Login</button>

                      <a href="#" class="modal__forgot_link">Forgot Password ?</a>
                    </form>

Хотите войти, используя электронную почту и мобильный телефон в codeigniter.I пытался создать функцию входа в CI, используя электронную почту или телефон. Я не могу этого сделать, и $user_data, используемый в контроллере, получает значения null. Это главная причина моего беспокойства. Пожалуйста, помогите мне с тем же. У меня есть 3-4 типа вариантов or_where, но ни один из них не работает для меня.

Ответы [ 2 ]

1 голос
/ 13 января 2020

Попробуйте это:

$this->db->select('*');
$this->db->from('user');
$this->db->group_start();
$this->db->where('email', $email)->or_where('mobile', $email);
$this->db->group_end();
$this->db->where('password', $sha_password);
$query = $this->db->get();

Для защиты пароля go с blowfi sh al go. https://www.php.net/password

1 голос
/ 13 января 2020

почему бы вам не попробовать использовать $ _POST напрямую вместо переменной

$email = $_POST['email'];

или вы можете использовать входной класс codeigniter

$email = $this->input->post('email');

, также вы можете спросить, переменная post существует вместо подсчета переменной $ _POST

if(count($form_post_data) >0)
if(isset($_POST['email']))
...