Получить данные пользователя из базы данных по сеансам входа Codeigniter 3 - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь создать систему входа в систему.Когда пользователь уже войдет в систему, он покажет личные данные пользователя, такие как имя, адрес электронной почты или что-то еще.Я пытаюсь изменить код входа в систему, но не работает.Может быть, кто-то может помочь.

Вот мой код. Контроллер

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class User_login extends CI_Controller
{

     public function __construct()
     {
          parent::__construct();
          $this->load->model('Model_user');
          $this->load->library('form_validation');

     }

     public function index()
     {

                 $this->load->view('user/user_login');

     }

     function aksi_login(){
   	$username = $this->input->post('username');
   	$password = $this->input->post('password');
   	$where = array(
   		'username' => $username,
   		'password' => $password,
      'status' => 1
   		);
   	$cek = $this->Model_user->cek_login('tb_user',$where)->num_rows();
   	if($cek > 0){

   		$data_session = array(
   			'username' => $username,
   			'status' => "userlogin"
   			);

   		$this->session->set_userdata($data_session);
   		redirect('user/user_dash');

   	}else{
   		  $this->session->set_flashdata('flash_data', '<div class="alert alert-danger" role="alert" style="font-size:12px">
   			<center><b>Sorry !!</b> Username / Password is not correct.
   		</center>
   		</div>');
   			redirect('user/user_login');
   	}
   }

   function logout(){
   	$this->session->sess_destroy();
   	redirect('user/user_login');
   }


}?>

Модель

	function cek_login($table,$where){
		return $this->db->get_where($table,$where);

	}

Я могу заставить сеанс имени пользователя появляться,

<?php echo $this->session->userdata('username') ?> it's working.

Но попробуйте показать имя, которое не появляется.Ценю любую помощь.Спасибо

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Вы можете попробовать что-то вроде этого.

$query = $this->Model_user->cek_login('tb_user',$where);
if($query->num_rows() > 0){
    $user = $query->row();
    $data_session = array(
        'username' => $username,
        'status' => "userlogin",
        'name' => $user->name,
        );

    $this->session->set_userdata($data_session);
    redirect('user/user_dash');


} {
      $this->session->set_flashdata('flash_data', '<div class="alert alert-danger" role="alert" style="font-size:12px">
        <center><b>Sorry !!</b> Username / Password is not correct.
    </center>
    </div>');
        redirect('user/user_login');
}

Чтобы это работало, в таблице должен быть столбец name tb_user

0 голосов
/ 26 июня 2019

Вам также необходимо сохранить полное имя в сеансе. Попробуйте отредактировать это

$cek = $this->Model_user->cek_login('tb_user',$where)->num_rows();
    if($cek > 0){

        $data_session = array(
            'username' => $username,
            'status' => "userlogin"
            );

к этому

$cek = $this->Model_user->cek_login('tb_user',$where);
    if($cek->num_rows() == 1){
         $row=$cek->result_array()[0]; //returns an array of results, pick the first

        $data_session = array(
            'fullname' =>  $row['fullname'], //assuming column name is 'fullname'
            'username' =>  $username,
            'status'   => "userlogin",
            );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...