2011-11-14 29 views
0

我一直在使用代码点火器重建我的网站,并且无法验证用户信息。简而言之,我可以在登录表单中输入乱码,无论如何,它都会将我带到“欢迎”页面。无法通过代码点火器验证用户登录

点击HERE查看我的代码

在此先感谢。

+0

会话数据是否正在创建?你应该在你的构造函数中添加'$ this-> output-> enable_profiler(TRUE);'然后你可以检查db查询和会话数据。 - 这也将有助于看到“家庭/仪表板”的代码和视图 – swatkins

+0

此外,我没有判断,但它看起来像你在数据库中存储纯文本密码。你应该加密这些。 – swatkins

+0

我打算使用带有盐的SHA1,我只是想先让标志正常工作,然后我将修改 – LightningWrist

回答

5

不知道,如果你有一个以上的问题更多,但是这绝对是其中之一:

if($query->num_rows = 1) { 

这应该是:

if($query->num_rows() == 1) { 
+0

请从CI用户指南查看此页面。 http://codeigniter.com/user_guide/database/results.html –

0

是什么$this->login();做模型?

不管怎么说,这似乎为我正常工作:

型号:

public function validate($email, $password) { 
    if ($email == 0 || $password == 0) return false; 

    //SEE IF THEIR INFO IS IN THE DB 
    $this->db->where('email', $email); 
    $this->db->where('password', $password); 
    $query = $this->db->get('users'); 
    return ($query->num_rows() == 1); 
} 

控制器:

public function validate() { 
    //THIS LOADS THE MODEL THAT TAKES ALL THEIR INFO THEY TYPED AND INSERT IN THE DB 
    $this->load->model('auth_model'); 
    $this->load->library('session');  

    $query = $this->auth_model->validate($this->input->post('email'),$this->input->post('password')); 

    if($query) { 
     // IF THEIR INFO MATCHES UP, THEN START A SESSION WITH CI'S BUILT IN SESSION CLASS 
     $data = array(
      'email' => $this->input->post('email'), 
      'password' => $this->input->post('password'), 
      'is_logged_in' => true 
      ); 
      // AUTO LOADED SESSION CLASS 
      $this->session->set_userdata($data); 

      //THIS WILL TAKE THEM TO THE DASHBOARD PAGE IF EVERYTHING CHECKS OUT 
      redirect('home/dashboard'); 
    } else { 
     // IF INCORRECT THEN RELOAD THE FORM FOR NOW 
     $this->index(); 
    } 
} 
0

Minboost的答案是肯定的东西,你在继续之前应该可以解决,但分配应该评估为真,并且你会遇到相反的问题。无论如何,人们都会登录。

您是将会话存储在数据库中还是使用cookie?我之前在设置Cookie时遇到了问题,然后立即重定向。有些浏览器似乎与Set-Cookie和Location标题的顺序有关。你可能会试图排除你的头之前排除这个问题。其他可能性包括:A)代码您没有向我们展示可能由于某种原因重定向回登录页面的代码,B)路由问题,C)通过在FireBug中跟踪响应头文件可以找到的其他内容。