Codeigniter - логин не работает в части if - PullRequest
0 голосов
/ 24 октября 2018

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

Контроллер: 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) {

            $id_member = $this->Member_model->get_member_id_from_username($username);
            $member    = $this->Member_model->get_member($id_member);

            //set session variables
            $_SESSION['id_member']   = $member->id;
            $_SESSION['logged_in']   = true;
            $_SESSION['username']    = $member->username;

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

        } else {

            print_r('User doesnt exist');                
        }
    }
}

//logging out of a user
public function logoutMember() {
    if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) {
        foreach ($_SESSION as $key => $value) {
            unset($_SESSION[$key]);
        }
        redirect('Member/Login');
    }
}

}

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

 public function profile() {

    if (isset($_SESSION['user_logged']) && $_SESSION['user_logged'] !== true) {

        $this->session->set_flashdata("error","Please login first to view");
        redirect('Member/Login');
    } else{
        $this->load->view('front/home');
    }
}

Модели: Member_model.php

     public function checkLogin($username, $password) {

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

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

public function get_member_id_from_username($username) {

    $this->db->select('id');
    $this->db->from('member');
    $this->db->where('username', $username);

    return $this->db->get()->row('id');

}

public function get_member($id_member) {

    $this->db->from('member');
    $this->db->where('id', $id_member);
    return $this->db->get()->row(); 
}

private function hash_password($password) {

    return password_hash($password, PASSWORD_BCRYPT);   
}


private function verify_password_hash($password, $hash) {

    return password_verify($password, $hash);   
}

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

<form method="post" action="<?php echo site_url('Login/loginMember'); ?>" >                        
                        <input class="text" type="text" id="username" name="username" placeholder="Your username"><br>
                        <input class="text" type="password" id="password" name="password" placeholder="Your password">
                        <input type="submit" value="Login">
                    </form>
                    <p>Don't have an Account? <a href="<?php echo site_url('Member/Register'); ?>"> SignUp NOW!</a></p>

Я думаю, что проблема в этом коде:

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) {

                $id_member = $this->Member_model->get_member_id_from_username($username);
                $member    = $this->Member_model->get_member($id_member);

                //set session variables
                $_SESSION['id_member']   = $member->id;
                $_SESSION['logged_in']   = true;
                $_SESSION['username']    = $member->username;

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

            } else {

                print_r('User doesnt exist');                
            }
        }

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

1 Ответ

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

В Member Controller измените условие if.Вы забыли "=" в нем.

if ($_SESSION['user_logged'] == FALSE)

И проверьте, хранит ли ваша переменная сеанса данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...