$ result的Codeigniter num_rows()始终返回0

时间:2014-01-30 05:54:38

标签: php mysql codeigniter

我有以下类来验证用户登录,

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();




    }


}

但即使我输入了有效的用户ID和&密码它将行计数返回为0,请帮助我,我在哪里做错了?

1 个答案:

答案 0 :(得分:1)

它不起作用,因为您加密密码。

CodeIgniter使用的加密函数在每次加密时使用随机初始化向量(IV),这意味着密码文本(加密文本)在每次加密时都会有所不同。

在处理密码时,您需要哈希它们,而不是加密它们。它们是相关的,但它们不是一回事。

如果你有PHP> = 5.5.0那么你可以这样做:

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

为此,您还需要重新哈希数据库中的密码。