首页 > 解决方案 > 与用户名和密码匹配时的 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;
        }
    }



}

标签: phphtmlcodeigniter

解决方案


如果是将form_validation不起作用,这是默认设置。另外,如果表单方法不是,则不会给出任何结果,因此您需要提供属性methodGET$this->input->post()POSTmethod='POST'

<?php 
   echo form_open('users/login', array('method'=>"POST"));
?>

如果您想使用GET方法验证表单,您需要查看此处此处
看看对你有没有帮助。


推荐阅读