2016-11-17 44 views
0

我正在关注本页中的教程http://www.kodingmadesimple.com/2016/06/codeigniter-login-and-registration-tutorial-source-code.html和我和其他人发现了相同的错误。:codeigniter登录表单验证总是失败

它在登录控制器中出现错误,因为它总是显示“错误的电子邮件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”为“密码”并删除了MD5,因为我不需要它,现在它的工作。

+0

'如果(计数($ uresult)> 0)'等于零,你需要看一下'get_user'函数,看看那里发生了什么。另外,我认为你有数据库中的用户是啊? – Blinkydamo

+0

数据库连接和数据都可以,因为我可以添加新用户 – NullEins

+0

好的,但结果数仍然为零,因此它为什么会进入else并给出错误。 – Blinkydamo

回答

0

因为你得到这条线的形式验证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(); 
+0

感谢您指向正确的方向,函数中的变量名称不同。现在它的工作! – NullEins

+0

不用担心 - 很高兴这是一个简单的修复! –