简体   繁体   中英

Display login only when user is not logged in Codeigniter

I'm trying to only display the login button/form when the user isn't logged in, and I'm not quite sure how to do it. I've already set up the login and registration, but I also want to greet the user with a message after the login and just hide the login form. Like... "Welcome back, $user".

Here's some of my code as a reference:

The login controller:

function login() {
    $query = $this->login_model->validate ();

    if ($query) {
        $data = array (
                'username' => $this->input->post ( 'username' ),
                'is_logged_in' => TRUE 
        ); 

        $this->session->set_userdata ( $data );
        redirect ( 'user/dashboard' );
    } else {
        redirect(base_url());
    }
}

The model:

class Login_model extends CI_Model {
    function validate() {
        $this->db->where ( 'nume', $this->input->post ( 'username' ) );
        $this->db->where ( 'parola', $this->input->post ( 'parola' ) );
        $query = $this->db->get ( 'users' );

        if ($query->num_rows () == 1) {
            return true;
        }
    }
}

The view:

<div class="dropdown pull-right drop hidden-xs">
    <button class="btn btn-default dropdown-toggle" type="button"
        id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true"
        aria-expanded="true">
        Login <span class="caret"></span>
    </button>
    <ul class="dropdown-menu cs-padding" aria-labelledby="dropdownMenu1">
        <?php echo form_open('menu/login'); ?>
        <li>Cont: <?php echo form_input(array('name'=>'username', 'class'=>'form-control custom-search hidden-sm form-custom', 'placeholder' => 'Nume',)); ?></li>
        <li>Parola: <?php echo form_input(array('name'=>'parola', 'class'=>'form-control custom-search hidden-sm form-custom', 'placeholder' => 'Parola',)); ?></li>
        <?php echo form_submit(array('name'=>'logare','value' => 'Login', 'class'=>'btn btn-default btn-custom col-lg-12')); ?>
        <?php echo form_close(); ?>
    </ul>
      <a href="<?php echo base_url(). "menu/inregistrare"; ?>"><button class="btn btn-default">Inregistrare</button></a>
</div>

Hope you guys can help me, thanks!

Here is code for check user is login and you can put your button here

    $isLogin= $this->session->userdata('is_logged_in');
    if(!isset($isLogin)||$isLogin!=true){
        //dont show login 
    }else{
       //show login
    }

In view change your code to

<div class="dropdown pull-right drop hidden-xs">
    <button class="btn btn-default dropdown-toggle" type="button"
        id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true"
        aria-expanded="true">
        Login <span class="caret"></span>
    </button>
    <ul class="dropdown-menu cs-padding" aria-labelledby="dropdownMenu1">
        <?php if($this->session->userdata('is_logged_in')){
         echo "welcome back ".$this->session->userdata('username');
        }else {?>
        <?php echo form_open('menu/login'); ?>
        <li>Cont: <?php echo form_input(array('name'=>'username', 'class'=>'form-control custom-search hidden-sm form-custom', 'placeholder' => 'Nume',)); ?></li>
        <li>Parola: <?php echo form_input(array('name'=>'parola', 'class'=>'form-control custom-search hidden-sm form-custom', 'placeholder' => 'Parola',)); ?></li>
        <?php echo form_submit(array('name'=>'logare','value' => 'Login', 'class'=>'btn btn-default btn-custom col-lg-12')); ?>
        <?php echo form_close(); ?>
        <?php }?>
    </ul>
      <a href="<?php echo base_url(). "menu/inregistrare"; ?>"><button class="btn btn-default">Inregistrare</button></a>
</div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM