[英]Fetching (not decrypt) md5 password from database
我一直在進行密碼設置,無論何時用戶想要更新密碼,他們都無法將新密碼更新為與先前/當前密碼相同的密碼。 數據庫中的密碼存儲為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>
問題在於您獲取數據的方式。它將以$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
應該是request
數據中的new_password
字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.