簡體   English   中英

從數據庫中獲取(不解密)md5密碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM