:codeigniter登录表单验证总是失败


:codeigniter login form validation always fails

我遵循这个页面http://www.kodingmadesimple.com/2016/06/codeigniter-login-and-registration-tutorial-source-code.html的教程,我和其他人都发现了同样的错误。

这可能是登录控制器出了问题,因为它总是显示"错误的电子邮件id或密码!"消息,即使凭证很好,但我找不到错误(尽管我已经发现并解决了其他一些),请帮助我。

控制器:

<?php
class login extends CI_Controller
{
public function __construct()
{
    parent::__construct();
    $this->load->helper(array('form','url','html'));
    $this->load->library(array('session', 'form_validation'));
    $this->load->database();
    $this->load->model('user_model');
}
public function index()
{
    // get form input
    $email = $this->input->post("email");
    $password = $this->input->post("password");
    //(This was added later for me, as it was needed)
    $this->load->helper('security');
    // form validation
    $this->form_validation->set_rules("email", "Email-ID", "trim|required|xss_clean");
    $this->form_validation->set_rules("password", "Password", "trim|required|xss_clean");
    if ($this->form_validation->run() == FALSE)
    {
        // validation fail
        $this->load->view('login_view');
    }
    else
    {
        // check for user credentials
        $uresult = $this->user_model->get_user($email, $password);
        if (count($uresult) > 0)
        {
            // set session
            $sess_data = array('login' => TRUE, 'uname' => $uresult[0]->fname, 'uid' => $uresult[0]->id);
            $this->session->set_userdata($sess_data);
            redirect("profile/index");
        }
        else
        {
            $this->session->set_flashdata('msg', '<div class="alert alert-danger text-center">Wrong Email-ID or Password!</div>');
            redirect('login/index');
        }
    }
  }
}
视图中

相关部分:

<?php $attributes = array("name" => "loginform");
        echo form_open("login/index", $attributes);?>
        <legend>Login</legend>
        <div class="form-group">
            <label for="name">Email-ID</label>
            <input class="form-control" name="email" placeholder="Enter Email-ID" type="text" value="<?php echo set_value('email'); ?>" />
            <span class="text-danger"><?php echo form_error('email'); ?></span>
        </div>
        <div class="form-group">
            <label for="name">Password</label>
            <input class="form-control" name="password" placeholder="Password" type="password" value="<?php echo set_value('password'); ?>" />
            <span class="text-danger"><?php echo form_error('password'); ?></span>
        </div>
        <div class="form-group">
            <button name="submit" type="submit" class="btn btn-info">Login</button>
            <button name="cancel" type="reset" class="btn btn-info">Cancel</button>
        </div>
    <?php echo form_close(); ?>
    <?php echo $this->session->flashdata('msg'); ?>

如果我没有解释清楚,或者如果你需要看到更多的代码,你可以直接查看教程链接。

非常感谢您的帮助。

编辑:这是模型中的函数:

function get_user($email, $pwd)
{
    $this->db->where('email', $email);
    $this->db->where('password', md5($pwd));
    $query = $this->db->get('user');
    return $query->result();
}

我已经将"pwd"更改为"password",并删除了md5,因为我不需要它,现在它工作了。

当您到达这一行时,表单正在验证OK:

$uresult = $this->user_model->get_user($email, $password);
        if (count($uresult) > 0)

检查get_user函数以确保返回结果集,例如:

$this->db->where('user_email', $user_email);
$result = $this->db->get('users');
return $result->result();