Как напечатать имя пользователя после многоуровневого сеанса входа в систему в codeigniter - PullRequest
1 голос
/ 18 октября 2019

Итак, я делал вход в систему с сеансом, и я хотел сделать одно из меню в заголовке, чтобы отображать имя пользователя после входа в систему, но у меня, похоже, есть проблема в создании условия, вот мой контроллер

<?php 

class Login extends CI_Controller{

    function __construct(){
        parent::__construct();      
        $this->load->model('m_login');

    }

    function index(){
        $this->load->view('header');
        $this->load->view('v_login');
        $this->load->view('footer');
    }

    function auth(){
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $where = array(
            'username' => $username,
            'password' => md5($password),
            'id' => '1');
        $where1 = array(
            'username' => $username,
            'password' => md5($password));
        $cek = $this->m_login->cek_login("admin",$where)->num_rows();
        $cek1 = $this->m_login->cek_login1("admin",$where1)->num_rows();
        if($cek > 0){
            $data_session = array(
                'nama' => $username,
                'status' => "login_admin"
                );

            $this->session->set_userdata($data_session);
            redirect(base_url("admin"));
        }elseif($cek1 > 0){
            $data_session = array(
                'nama' => $username,
                'status' => "login_user"
                );

            $this->session->set_userdata($data_session);
            redirect(base_url("user"));
        }else{
            echo "Username dan password salah !";
        }
    }

    function logout(){
        $this->session->unset_userdata($data_session);
        $this->session->sess_destroy();
        redirect(base_url("welcome"));
    }
} 

и это мое мнение

<?php if($this->session->userdata('login_admin')) 
          { ?>
          <li class="nav-item px-lg-4">
            <a class="nav-link text-uppercase text-expanded" href="">Welcome Admin</a>
          </li> 
          <li class="nav-item px-lg-4">
            <a class="nav-link text-uppercase text-expanded" href="<?php echo base_url('login/logout'); ?>">Logout</a>
          </li> 
          <?php }elseif($this->session->userdata('login_user')) 
          { ?>
          <li class="nav-item px-lg-4">
            <a class="nav-link text-uppercase text-expanded" href="">Hai, <?php echo $this->session->userdata("nama"); ?></a>
          </li>
          <li class="nav-item px-lg-4">
            <a class="nav-link text-uppercase text-expanded" href="<?php echo base_url('login/logout'); ?>">Logout</a>
          </li> 
          <?php
          }else{ ?>
          <li class="nav-item px-lg-4">
            <a class="nav-link text-uppercase text-expanded" href="login">Masuk</a>
          </li>
          <li class="nav-item px-lg-4">
            <a class="nav-link text-uppercase text-expanded" href="login">Daftar</a> 

Может кто-нибудь сказать мне, есть ли проблема в моем контроллере или это, как я ожидал в представлении, и дать мне решение?

Ответы [ 2 ]

3 голосов
/ 18 октября 2019

Ваше состояние в представлении вместо

<?php if($this->session->userdata('login_admin')) 

должно быть

<?php if($this->session->userdata('status') == 'login_admin' ) 

Вы можете проверить Документы как читать данные сеанса.

0 голосов
/ 19 октября 2019

Сначала вы исправляете написание имени, когда сохраняете его в сеансе. После этого вы можете увидеть имя пользователя, вошедшего в систему, по следующей строке:

    <?= $this->session->userdata('name'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...