【发布时间】:2019-03-25 05:57:59
【问题描述】:
当我尝试更新/更改密码时,它说我当前的密码错误,
我使用 md5 加密密码,但我不知道如何使用 jQuery 和 Ajax 更新加密密码。
这是我正在使用的 jQuery 代码:
jQuery("#change_password").submit(function (e) {
e.preventDefault();
var password = jQuery('#password').val();
var current_password = jQuery('#current_password').val();
var new_password = jQuery('#new_password').val();
var retype_password = jQuery('#retype_password').val();
if (password != current_password) {
$.jGrowl("Password does not match with your current password ", {
header: 'Change Password Failed'
});
} else if (new_password != retype_password) {
$.jGrowl("Password does not match with your new password ", {
header: 'Change Password Failed'
});
} else if ((password == current_password) && (new_password == retype_password)) {
var formData = jQuery(this).serialize();
$.ajax({
type: "POST",
url: "update_password_mahasiswa.php",
data: formData,
success: function (html) {
$.jGrowl("Your password is successfully change", {
header: 'Change Password Success'
});
var delay = 2000;
setTimeout(function () {
window.location = 'dashboard_mahasiswa.php'
}, delay);
}
});
更新密码的php代码:
<?php
include('dbcon.php');
include('session.php');
$new_password = $_POST['new_password'];
$new_password = md5($new_password)
mysql_query("update mahasiswa set password = '$new_password' where mahasiswa_id = '$session_id'")or die(mysql_error());
?>
【问题讨论】:
-
不要使用
md5()进行密码散列。 这是非常不安全的。请改用 PHP 的password_hash()和password_verify()。如果您运行的 PHP 版本低于 5.5(我真的希望您不是),您可以使用 password_compat library 来获得相同的功能。 -
您应该将密码发布到后端,由您处理所有密码验证和散列。
-
不要使用
mysql_-函数。它们已被弃用多年,并在 php7 中被删除。使用 mysql 或 pdo,并使用参数化语句 - 现在,您的代码很容易受到 SQL 注入攻击! 这意味着您的服务迟早会 泄露敏感数据对黑客。