【发布时间】:2019-03-10 08:44:19
【问题描述】:
这是我的模型:
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);
}
});
});
我的问题是我的密码即使没有错误也不会更改,而且我不知道我的代码错误在哪里。我是新手。
【问题讨论】:
-
这仅仅是一个爱好项目和/或学校项目吗?如果是这样,我建议从头开始,因为使用 MD5 进行密码散列、无盐和更新任何匹配的人都是 Web 应用程序安全性的基本问题。而且我怀疑您对 SQL 注入持开放态度(即使 此代码中 中没有任何内容。
-
您的 where 子句看起来不对。插入一个 echo $sql;你会看到的。
-
同意@kuh-chan。在语句的第二部分,
$user_oldpass变量将被扩展,但md5(和)部分也将包括在内。该查询将查找类似 @987654328@(而不是 md5 哈希)的内容,并且与您要查找的记录不匹配。
标签: javascript php jquery