Как вывести значение моего имени и фамилии в панель навигации - PullRequest
0 голосов
/ 17 апреля 2019

Я использую воспламенитель кода, и я хотел отобразить полное имя пользователя, вошедшего в мою навигацию.

Я попытался отобразить значение имени пользователя, вошедшего в систему, а также пароль.

Затем я также попытался добавить элементы массива, такие как имя и фамилия, на моих пользователях таблицы базы данных, и это не работает.

Ниже приведен мой код функции входа в систему на контроллере

        public function login(){
            $data['title'] = 'Sign In';

            $this->form_validation->set_rules('user_email','email','required|valid_email');
            $this->form_validation->set_rules('user_password','password','required');

if($this->form_validation->run() === FALSE){
$this->load->view('templates/header');              
$this->load->view('login',$data);

} else {
    $email = $this->input->post('user_email');
$password = md5($this->input->post('user_password'));
//Login User
$user_id = $this->user_model->login($email,$password);
if($user_id){
//create sessions
$user_data = array(                     
                        'user_email' => $email,     
                        'user_name' => $user_id->user_name,
                        'user_roles' => $user_id->types,
                        'logged_in' => true
                    );
                    $this->session->set_userdata($user_data);

             $this->session->set_flashdata('user_loggedin','You are now Login');
             redirect(base_url() . 'site/dashboard');
                } else {
              //Set message
              $this->session->set_flashdata('failed_login','Login is Invalid');
              redirect(base_url() . 'site');
                }      
            }
        }

Ниже приведена моя функция входа в систему user_model

      public function login($email,$password)
      {
        $this->db->where('user_email',$email);
        $this->db->where('user_password',$password); 

        $result = $this->db->get('users');
        if($result->num_rows() === 1){
            return $result->row(0)->id;
        } else {
            return false;
        }
    }
 <li class="nav-item dropdown no-arrow">
    <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        <span class="mr-2 d-none d-lg-inline text-gray-600 small">Welcome, <?php echo $this->session->userdata('user_name'); ?></span>
        <!-- <img class="img-profile rounded-circle" src="https://source.unsplash.com/QAB-WJcbgJk/60x60"> -->
    </a>
</li>

Мне удалось только отобразить имя пользователя и пароль, но не таблицы имен или фамилий, которые вошли в систему

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Вы не сохранили данные в сессии должным образом

Просто напишите эту часть кода в функции вашей модели. Я думаю, что это решит вашу проблему.

 //model function
        $this->load->model('user_model');
        $user_data = $this->user_model->login_success($username, $password);
        if ($user_data) {
            $session_data = array(
                'username' => $username,
                'password' => $password,
                'first_name' => $user_data->first_name,  // This value from DB
                'last_name' => $user_data->last_name    // This value from DB
         );

        $this->session->set_userdata($session_data);

Напишите код вашей модели следующим образом:

  public function login($email,$password)
  {
    $this->db->where('user_email',$email);
    $this->db->where('user_password',$password); 

    $result = $this->db->get('users');
    if($result->num_rows() == 1){
        return $result->row() // it will fetch all the data from your db row
    } else {
        return false;
    }
}

, вам нужно изменить return $result->row(0)->id на return $result->row(). Надеюсь, теперь вы получите желаемый результат.

0 голосов
/ 17 апреля 2019

В вашем методе login_success извлеките данные пользователя, такие как имя и фамилия, и верните их.

вы можете назначить имя и фамилию, используя сеансы в вашем коде.

 $session_data = array(
            'username' => $username,
            'password' => $password,
            'first_name' => $firstname, // Assumed this value from DB
            'last_name' => $lastname // Assumed this value from DB
            );

В своем HTML вы можете показать приветственное сообщение, как показано ниже:

<span class="mr-2 d-none d-lg-inline text-gray-600 small">Welcome, <?php echo $this->session->userdata('first_name'); ?> &nbsp; <?php echo $this->session->userdata('last_name'); ?></span>
...