2012-12-15 80 views
0

這是從日誌進來的形式爲電子郵件和密碼字段:MySQL數據庫項不會加載?

echo form_open('main/login_validation'); 

echo "<P>Email: </br>"; 
echo form_input('email',$this->input->post('email')); 
echo "</P>"; 

echo "<P>Password: </br>"; 
echo form_password('password'); 
echo "</P>"; 

echo "<P>"; 

$img_path = base_url()."imgs/log_in_0.png"; 

echo '<input type="image" src="'.$img_path.'">'; 
echo "</P>"; 

echo form_close(); 

業大控制器在表單驗證:

$this->load->library('form_validation'); 

$this->form_validation->set_rules('email', 'Email', 'required|trim|xss_clean|callback_validate_credentials'); 

$this->form_validation->set_rules('password', 'Password', 'required|trim'); 

if($this->form_validation->run()){ 
     $data = array(
      'email' => $this->input->post('email'), 
      'is_logged_in' => 1 
     ); 
     $this->session->set_userdata($data); 

     $nKey ='members'; 
     $this->page($nKey); 
    } else { 
     $nKey ='login'; 
     $this->page($nKey); 
    } 

回調將它發送到:

public function validate_credentials(){ 
    $this->load->model('model_users'); 

    $salt = $this->model_users->get_salt(); 

    if($this->model_users->can_log_in($salt)){ 

     return true; 
    }else{ 

    $this->form_validation->set_message('validate_credentials', 'Incorrect Email/Password.'); 
    return false; 
    } 

} 

當它調用get_salt()它然後從模型加載:

public function get_salt(){ 

    $this->db->where('email', $this->input->post('email')); 


    $query = $this->db->get('users'); 

    if($query){ 

     $row = $query->row(); 

     $salt = $row->salt; 

     return $salt; 
    }else{ 
     echo 'failed salt'; 

    } 

} 

相同的代碼字精前兩天,現在它給出了一個非對象錯誤:

$salt = $row->salt; 

不會加載查詢權,我從後陣列笨function $this->input->post('email')呼應,它迴應正確的電子郵件。

但是當我print_r查詢它回來一個空的查詢對象,但電子郵件是在用戶數據庫表(在電子郵件字段和一切),我已經檢查,我使用這個相同的帳戶做測試只是前幾天

+0

是否領域「鹽」表真的存在「用戶」?沒有大寫字母? – berty

+0

是的,我發現問題,我在電子郵件中有一個字母錯誤,所以沒有一個條目,我看了看電子郵件,從來沒有注意到一個字母差異 – John

+0

l花了一個小時試圖找到它,閱讀該電子郵件至少50次,永遠不會註冊 – John

回答

0

所以我得到的錯誤,因爲我輸入了錯誤的密碼詞,它確實測試,看看用戶是否存在。

代碼來測試,如果用戶存在:

CodeIgniter - Checking to see if a value already exists in the database

在接受的答案

+0

一個建議 - 您可能需要單獨檢查電子郵件是否存在於您的系統中。這樣,如果有人登記了,但他們意外地輸入了錯誤的密碼 - 你可以告訴他們,嘿,我們認出你了,但密碼不正確。 – cartalot

+0

如果我這樣做,我給我的數據表的黑客,一半的難題讓你知道你解決了它,而我要實現一個電子郵件系統,將通知一個人,如果他們的帳戶已被嘗試訪問3次或更多次,輸出正確的密碼,詢問是否是他們,以及他們是否要更改密碼以及在網站上設置密碼重置選項。那麼,如果他們說這不是他們,可以記錄(試圖訪問該帳戶的人)的ip和任何其他識別信息的副本,甚至可以禁止該ip從該站點 – John