我一直在设置密码设置,无论何时用户想要更新密码,他们都无法将新密码更新为与上一个/当前密码相同。数据库中的密码存储格式为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>
答案 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
字段。