从数据库中获取(不解密)md5密码

时间:2014-12-09 06:34:48

标签: php mysql cakephp

我一直在设置密码设置,无论何时用户想要更新密码,他们都无法将新密码更新为与上一个/当前密码相同。数据库中的密码存储格式为md5格式。

所以我要做的是首先将新的输入密码转换为md5并将其与数据库中的密码进行比较。这可能是一个小错误,但经过几个小时的尝试和谷歌搜索,我仍然无法获取数据库中的密码进行比较。

我在想它可能是参数。我是一个新手,还在学习,对不起,如果这对于像男人这样的专家来说太简单了。提前感谢您的时间。

这是我的模特

public function getUserPassword($uid) {
    $conditions = array('users.uid="'.$uid.'"');
    $result = $this->find('all', array('conditions' => $conditions,'fields' => array('users.upwd')));
    return $result;    
}

控制器

    $data = $this->request->data;
    $uid = $data['uid'];
    $new_pwd ='';
   if($continue == true) {
        if(md5($new_pwd) == $this->users->getUserPassword($uid)) {
            $continue = false;
            $return_msg = "New password cannot be the same as the old password";            
        }
    }

查看

<tr>
    <td><input id="new_pwd" type="password" name="new_password"></input></td>
</tr>

1 个答案:

答案 0 :(得分:0)

问题在于您获取数据的方式。它将返回$result['Model']['fieldsname']。所以在比较时你必须要处理它。改变函数getUserPassword() -

public function getUserPassword($uid) {
    $result = $this->field('users.upwd', array('users.uid' => $uid)); //will return the value in db field
    return $result;    
}

在控制器中 -

$data = $this->request->data;
$uid = $data['uid'];
$new_pwd ='';
if($continue == true) {
    if(md5($new_pwd) == $this->users->getUserPassword($uid)) {
        $continue = false;
        $return_msg = "New password cannot be the same as the old password";            
    }
}

$new_pwd应该是new_password数据中的request字段。