2011-11-14 26 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中跟蹤響應頭文件可以找到的其他內容。