php - 与用户名和密码匹配时的 Codeigniter 登录系统错误
问题描述
我用codeigniter做了一个登录程序,当我在表单中输入错误的用户名或密码时没有问题,它就像在程序中一样给我失败的警报。起初,我认为访问数据库没有问题。当我输入已经添加到数据库中的用户名和密码时,失败警报并没有像应有的那样出现。但是当我在 if-else 程序中输入代码时。失败时显示警报,并且死亡('成功');如果它匹配密码和用户名。但是死(成功)代码不起作用,当我重定向到其他页面时,它也不起作用。如果变量为 FALSE,该程序就可以工作。
这是我的看法
<?php echo form_open('users/login'); ?>
<div class="row justify-content-md-center" ">
<div class="col-md-4 col-md-4-offset-4 rounded-lg" style="background-color: white" >
<br>
<h2 class="text-center"><?= $title ?></h2>
<div class="form-group">
<input type="text" name="username" class="form-control" placeholder="Masukkan Username" required autofocus>
</div>
<div class="form-group">
<input type="password" name="password" class="form-control" placeholder="Masukkan Password" required autofocus>
</div>
<center><button type="submit" class="btn btn-success btn-block">LOGIN</button></center>
<br>
</div>
</div>
我的控制器
<?php
class Users extends CI_Controller{
}
public function login(){
$data['title'] = 'Login Admin ISNU Kalsel';
$this->form_validation->set_rules('username','Username','required|callback_check_username_exist');
$this->form_validation->set_rules('password','Password','required');
if($this->form_validation->run()===FALSE){
$this->load->view('templates/header');
$this->load->view('users/login',$data);
$this->load->view('templates/footer');
}else{
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$this->load->model('user_model');
$user_id = $this->user_model->login($username,$password);
if($user_id == FALSE){
die('success');
$this->session->set_flashdata('login_failed','Login Gagal!');
redirect('users/login');
}else{
$this->session->set_flashdata('user_loggedin','Selamat datang di website ISNU Kalsel');
redirect('posts');
}
//set pesan
}
}
}
和我的模特
<?php
class User_model extends CI_Model{
public function __construct(){
$this->load->database();
}
public function login($username,$password){
$this->db->where('username',$username);
$this->db->where('password',$password);
$result = $this->db->get('users');
if($result->num_rows() == 1){
return $result->row(0)->id;
}else{
return FALSE;
}
}
}
解决方案
推荐阅读
- python-3.x - 如何使用 python tkinter 为我的表格制作边框?
- c# - “HttpRequestBase”不包含“Body”的定义
- r - 使用“relevel”函数进行多项回归的问题
- c - 为什么需要 seqlock 的 IRQ 安全版本来进行读取访问?
- javascript - React.JS 备份状态的最佳方式
- javascript - 在 JavaScript 对象中正确使用“this”
- google-maps - 谷歌地图给定区域内唯一道路距离的总和
- python - 如何在 PDF 文件中打印 QDialog
- javascript - 使用两个背景图像并动态修改不透明度
- angular - Angular 7 与 Angular 8 功能比较