簡體   English   中英

如何在PHP中更改密碼?

[英]How to change the password in PHP?

這是我的模型:

public function editNewPassword($data){
    // $user_name = $data['user_name'];
    $user_id = $data['id'];
    $user_oldpass = $data['password'];
    $user_newpass = $data['newpass'];


    $sql = "UPDATE user SET password = '".md5($user_newpass)."' WHERE password = 'md5($user_oldpass)' ";
        $query = $this->db->prepare($sql);
        $query->execute();
}


public function getUser(){
    return $this->db->select("SELECT * FROM 'users'");
}

這是我的控制器:

function changePassword(){
        if(isset ($_POST['edit_password'])){
            $user_oldpass = ($_POST['user_oldpass']);
            $user_id = ($_POST['user_id']);
            $user_name = ($_POST['user_name']);
            $user_newpass = ($_POST['user_newpass']);

            $this->model->editNewPassword($data);
    }       
}

這是我的 VIEW 代碼:

<form role="form">
<!-- <input typ e="text" name="username" id="username" placeholder="Enter Your Username"><br> -->
<input type="text" name="old_password" id="old_password" placeholder="Enter Your Old Password"><br>
<input type="text" name="new_password" id="new_password" placeholder="Enter Your New Password"><br>
<input type="text" name="con_newpassword" id="con_newmpassword" placeholder="Enter Confirm Password"><br>
<span id='message'></span>
<input type="hidden" id="edit_password_id">
<button id="edit_password" style="background-color:#008000">Submit</button>

這是我的 javascript 代碼:

$('#edit_password').on('click', function(){
// alert('Password changed successfully!')
var 
user_id = $('#edit_password_id').val();
user_name = $('#username').val();
user_oldpass = $('#oldpassword').val();
user_newpass = $('#newpassword').val();


$.ajax({
url: URL+'changepassword/changePassword',
type: "post",
data: {
    id : id,
    name : name,
    password : password, 
    newpass : newpass
},
success: function(response){
    $('#edit_password_id').modal('toggle');
    location.reload();
},
error: function(jqXHR, textStatus, errorThrown) {
    console.log(textStatus, errorThrown);
}
});
});

我的問題是我的密碼即使沒有錯誤也不會改變,我不知道我的代碼錯誤在哪里。 我是新來的。

這里的代碼是直接的問題:

$sql = "UPDATE user SET password = '" .
    md5($user_newpass) .
    "' WHERE password = 'md5($user_oldpass)' ";

對於“password”密碼,數據庫將看到:

 UPDATE user SET password = '5f4dcc3b5aa765d61d8327deb882cf99'
 WHERE password = 'md5(password)'

我相信你希望這里的md5()被視為一個數據庫函數,但由於它是在引號中,它只會被視為一個普通的字符串。 由於您的用戶沒有md5(password) ,查詢會運行並且不會影響任何行。

相關建議

  • 不要使用 MD5 作為密碼的散列算法
  • 總是使用鹽
  • 除非您知道自己在做什么,否則請使用內置的散列和加鹽函數
  • 密碼更新應該過濾用戶和密碼,而不僅僅是用戶
  • 使用參數綁定避免 SQL 注入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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