Я пытаюсь изменить пароль в одной из моих работ.Невозможно отправить значения в базу данных после изменения атрибутов html
ЧТО Я ХОЧУ ДЕЛАТЬ:
1. Сначала проверьте текущий пароль.
2. Если текущий пароль введен правильно, кнопка «Продолжить» сдвинется вниз и отобразится новое поле «Confirm».
3. Когда он отображается, изменяется атрибут полей и кнопки.
4. Затем я хочу ввести новый пароль и подтвердить пароль в соответствующих файлах и проверить, имеют ли оба поля одинаковое значение.
5. Если оба имеют одинаковое значение, тогда таблица обновляется и если не производится предупреждение.
ПРОБЛЕМА: С шага 4 перед лицом проблемы. Всякий раз, когда я даю неправильные значения в обоих полях, я получаю ошибку как «Неверный пароль», а не как «Пароль и пароль подтверждения не совпадают!».
Где я, возможно, ошибаюсь?
Заранее спасибо.
Jquery
<script>
$(document).ready(function()
{
$('#Button1').click(function()
{
var password=$('#password').val();
var dataString = 'password='+password;
$.ajax({
type:"POST",
data: dataString,
url: "activateSettings.php",
cache:false,
success: function(html){
if(html){
alert('Incorrect Password');
}
else{
$('#password').attr('id', 'newpassword');
$('#newpassword').attr('name', 'newpassword');
$('#newpassword').val('');
$('#newpassword').attr('placeholder', 'Enter your new password');
$('#confirm').css("visibility", "visible");
$('#Button1').addClass('move');
$('#Button1').val('Change');
$('#Button1').attr('id', 'ButtonChange');
$('#ButtonChange').attr('name', 'ButtonChange');
}
}
});
});
$('#ButtonChange').click(function()
{
var newpassword=$('#newpassword').val();
var confirmpassword = $('#confirm').val();
var dataString = 'newpassword='+newpassword+'&confirmpassword='+confirmpassword;
$.ajax({
type:"POST",
data: dataString,
url: "activateSettings.php",
cache:false,
success: function(html){
if(html){
alert('Password and Confirm Password does not match!');
}
}
});
});
});
</script>
PHP
<?php
include 'connect.php';
session_start();
if (isset($_POST['password']))
{
$found = false;
$password = $_POST['password'];
$user = $_SESSION['username'];
$sql = "SELECT salt, password, firstname, lastname FROM user WHERE username = '$user'";
$result = mysqli_query($db, $sql);
if ($data = mysqli_fetch_array($result))
{
$salt = $data['salt'];
$crypt_pass = hash('sha256', $salt.$password);
if ($crypt_pass == $data['password'])
{
$found = true;
}
}
mysqli_close($db);
if($found == false)
{
echo '0';
}
}
else
if(isset($_POST['newpassword']) && isset($_POST['confirmpassword']))
{
$newpassword = $_POST['newpassword'];
$confirmpass = $_POST['confirmpassword'];
if($newpassword == $confirmpass)
{
//Create SALT
$bytes = openssl_random_pseudo_bytes(6, $cstrong);
$salt = bin2hex($bytes);
//Encrypt PASSWORD with SALT
$crypt_pass = hash('sha256', $salt.$password);
$sql = "UPDATE `user` SET `salt` = $salt, `password` = $crypt_pass WHERE `username` = '$user'";
$result = mysqli_query($db, $sql);
mysqli_close($db);
}
else{
echo '0';
}
}
?>
HTML
<input type="password" id="password" name="password" value="" autocomplete="off" placeholder="Enter your current password">
<input type="password" id="confirm" name="confirm" value="" autocomplete="off" placeholder="Re-type password">
<input type="submit" id="Button1" name="proceed" value="Proceed">
Обновление: Я пробовал сценарий, данное Naresh. Он показывает мне правильные сообщения, но никакого эффекта на базу данных не делается.
[Не ограничивайте пароли] (HTTP: // jayblanc hard.net/security_fail_passwords.html) и [использовать правильные методы для хэш-паролей с помощью PHP] (http://jayblanchard.net/proper_password_hashing_with_PHP.html). –
Вы проверили, действительно ли текущий пароль? было бы проще, если бы вы присоединились ко всем полям вместе с «текущим паролем, новым паролем, подтвердите новый пароль», а затем отправьте кнопку – tonoslfx
Да, текущий пароль действителен. Что вы подразумеваете, присоединяясь к полям? Я тебя не понял. – Ayan