Codeigniter Вход и выход из сеанса, если не работает правильно - PullRequest
0 голосов
/ 25 октября 2018

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

Контроллер: Login.php

class Login extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->library(array('session', 'form_validation'));
        $this->load->helper(array('url', 'form'));
        $this->load->model("Member_model");
    }

    public function loginMember() {

        $this->form_validation->set_rules('username','Username','required');
        $this->form_validation->set_rules('password','Password','required');

        if ($this->form_validation->run($this) == FALSE) {

            $this->load->view('front/login');

        } else {

            //enter username and password
            $username = $this->input->post('username');
            $password = $this->input->post('password');

            $this->load->model('Member_model');
            $member = $this->Member_model->checkLogin($username, $password);

            if ($member > 0) {

                $data_session = array(
                    'nama' => $member->username,                
                    'logged_in' => true
                );
                $this->session->set_userdata($data_session);

                //redirect
                redirect('Member/profile');

            } else {

                print_r('User doesnt exist');

            }
        }
    }


    //logging out of a user
    public function logoutMember() {
        $this->session->sess_destroy();
        redirect('Member/Login');
    }
}

Модель: Member_model.php

 public function checkLogin($username, $password) {

        $this->db->select('password');
        $this->db->from('member');
        $this->db->where(array('username' => $username, 'password'=> $password));
        $hash = $this->db->get()->row('password');

        return $this->verify_password_hash($password, $hash);

        if ($hash->num_rows()>0) {
            return $hash->row(); 
        } else {
            return false;
        }
    }
   private function hash_password() {

    return password_hash($password, PASSWORD_BCRYPT);   
}


private function verify_password_hash($password, $hash) {

    return password_verify($password, $hash);   
}

Просмотр: Home.php

<li class="dropdown">
                                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
                                    <?php echo $this->session->userdata("nama");?>
                                    Member<span class="caret"></span></a>
                                <ul class="dropdown-menu">
                                    <li><a href="<?php echo site_url('checkout')?>"><img src="<?php echo base_url('assets/img/shopping-cart.png')?>" style="height:15px;width:15px;"> Checkout</a></li>
                                    <li role="separator" class="divider"></li>
                                    <li><a href="<?php echo base_url('login/logoutMember')?>">Logout</a></li>
                                </ul>
                            </li>

Я не знаю, что делать, если ($ member) накод loginMember в контроллере входа не работает, и каждый раз при вводе данных я всегда получаю другое.Но когда я комментирую if ($ member) следующим образом:

         $this->load->model('Member_model');
            $member = $this->Member_model->checkLogin($username, $password);

            $_SESSION['logged_in']   = true;
            $_SESSION['username']    = $member->username;

            redirect('Member/profile');

//            if ($member > 0) {
//                
//                $data_session = array(
//                    'nama' => $member->username,                
//                    'logged_in' => true
//                );
//                $this->session->set_userdata($data_session);
//                
//                //set session variables
////                $_SESSION['logged_in']   = true;
////                $_SESSION['username']    = $member->username;
//                
//                //redirect
//                redirect('Member/profile');
//                
//            } else {
//                
//                print_r('User doesnt exist');
//                
//            }

Он работает отлично, но я не могу использовать сеанс при просмотре дома, когда я вызвал сеанс username, чтобы показать, кто является логином в этот раз.И я вызвал представление в Controller Member, как это:

Controller: Member.php

public function profile() {
    if( $this->session->userdata('logged_in')){
        $data["slider"] = $this->Indexweb_model->getAll();
        return $this->load->view('front/home', $data);
    }
    redirect('Member/Login');
}

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

попробовать в модели

if ($hash->num_rows() > 0) { 
    return $hash->row(); 
} else { 
    return FALSE; 
} 

контроллер:

if (!$member)
0 голосов
/ 25 октября 2018

Проверьте в вашем методе индекса вашего контроллера:

public function index(){
        if( $this->session->userdata('logged_in'))
          return redirect('Dashboard');
        $this->load->view('login');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...