2014-01-30 3 views
0

У меня есть следующий класс для проверки пользователя Логин,

class Validation_model extends CI_Model { 


public function validateLogin($userid,$userpass){  


    $this->load->library('encrypt'); 
    $this->load->database(); 
    $encrypted_string = $this->encrypt->encode($userpass); 

    $this->db->select('*'); 
    $this->db->from('ecom-user'); 
    $this->db->where('userid', $userid); 
    $this->db->where('userpassword', $encrypted_string); 

    $result = $this->db->get(); 


    echo $result->num_rows(); 




    } 


} 

Но когда я даже введен действительный идентификатор & пароль возвращает количество строки как 0, пожалуйста помогите мне в этом, где я совершил ошибку?

+1

печати последнего запроса и запустить в вашем PHPMyAdmin –

+0

Она также возвращает ноль :( –

+0

вероятно $ encrypted_string не работаю ... попробуйте ввести пароль вручную в запросе и посмотреть, если он работает – Makrand

ответ

1

Это не работает, потому что вы являетесь , шифруя пароль.

Функция шифрования, используемая CodeIgniter, использует случайный вектор инициализации (IV) каждый раз, когда он шифрует что-либо, а это означает, что шифрованный текст (зашифрованный текст) будет отличаться при каждом зашифрованном виде.

При работе с паролями вам необходимо хэш их, а не ENCRYPT их. Они связаны друг с другом, но это не одно и то же.

Если у вас есть PHP> = 5.5.0, то вы можете сделать:

$hashed_password = password_hash($userpass, PASSWORD_DEFAULT); 
// ... 
$this->db->where('userpassword', $hashed_password); 

Для этого вам также необходимо переустановить пароли в вашей базе данных.

+0

Спасибо большое, я получил его сейчас! –

Смежные вопросы