[英]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.