我有一个用户表,其中使用Codeigniter中的加密库对密码列的数据进行编码。现在,我想选择编码列进行解码并与密码的用户输入(登录验证)进行比较。这是代码。 我插入了这样的值:
$this->db->insert("my_table",Array("username"=>$this->input->post("username"),"password"=>$this->encrypt->encode($this->input->post("password"))));
现在我以这种方式验证输入:
$data = $this->db->get("mytable");
foreach($data as $d){
if($d["username"] == $this->input->post("username") && $d["password"] == $this->encrypt->decode($this->input->post("password")){
//success
break;
}
}
这对我来说很好,但是,我想要一个更简洁,更清洁的方法来做到这一点。您也知道,未来的编码实践。 以下是我到目前为止所做的事情:
$this->db->get_where("my_table",Array($this->encrypt->decode("password")=>$this->input->post("password")));
但是啊!这将返回错误消息。错误说:
Unknown column '0' on where clause
答案 0 :(得分:0)
问题是您将解码后的密码设置为数据库列。
Array($this->encrypt->decode("password")=>$this->input->post("password"))
你需要做的事情更像是:
Array("password" => $this->encrypt->decode("password"))
答案 1 :(得分:0)
首先,如果可以解密,加密密码不是一个好主意!!!
最佳做法是加密输入,然后在数据库中选择
$this->db->select('*')
$yhis->db->from('mytable')
$this->db->where('username', $this->input->post("username"));
$this->db->where('password', $this->encrypt->encode($this->input->post("password")));
$this->db->get();
如果结果......请登录