简体   繁体   English

Codeigniter-if部分中的登录无效

[英]Codeigniter - Login is not working in the if part

My login is not working when I input the data it will always revert to login view... I create it so it will go to front/home if I input the data but somehow the if in function login is not working and always change it to the else... 当我输入数据时,我的登录名不起作用,它将始终恢复为登录视图...我创建了它,因此如果我输入数据,它将进入前/家,但是以某种方式,如果in函数中的登录名不起作用并且总是更改它到其他...

Controller:Login.php 控制器: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');
    }
}

} }

Controller:Member.php 控制器: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');
    }
}

Models:Member_model.php 型号: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);   
}

View:login.php 查看: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>

I think the problem is in this code: 我认为问题出在以下代码中:

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');                
            }
        }

Because, after I input the data it will print out User doesnt exist... Eventhough the data that I input it's seems like the data that in database.. 因为,在我输入数据之后,它将打印出用户不存在...尽管我输入的数据看起来像数据库中的数据。

In the Member Controller change the if condition. 在成员控制器中更改if条件。 You forgot a "=" in it. 您忘记了其中的“ =“。

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

And check if your session variable stores the data. 并检查您的会话变量是否存储数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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