2015-05-29 3 views
0

Я пытаюсь изменить пароль в одной из моих работ.Невозможно отправить значения в базу данных после изменения атрибутов 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. Он показывает мне правильные сообщения, но никакого эффекта на базу данных не делается.

+2

[Не ограничивайте пароли] (HTTP: // jayblanc hard.net/security_fail_passwords.html) и [использовать правильные методы для хэш-паролей с помощью PHP] (http://jayblanchard.net/proper_password_hashing_with_PHP.html). –

+0

Вы проверили, действительно ли текущий пароль? было бы проще, если бы вы присоединились ко всем полям вместе с «текущим паролем, новым паролем, подтвердите новый пароль», а затем отправьте кнопку – tonoslfx

+0

Да, текущий пароль действителен. Что вы подразумеваете, присоединяясь к полям? Я тебя не понял. – Ayan

ответ

-1

Изменить сценарий

<script> 
function check(val) 
{ 
    var type=$(val).attr("name"); 
    if(type=="proceed") 
    { 
     var password=$('#password').val(); 
     var dataString = 'password='+password; 
     $.ajax({ 
      type:"POST", 
      data: dataString, 
      url: "test.php", 
      cache:false, 
      success: function(html){ 
       if(html=="false"){ 
        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'); 
       } 
      } 
     }); 
    } 
    else if(type=="ButtonChange") 
    { 
     var newpassword=$('#newpassword').val(); 
     var confirmpassword = $('#confirm').val(); 

     var dataString = 'newpassword='+newpassword+'&confirmpassword='+confirmpassword; 

     $.ajax({ 
      type:"POST", 
      data: dataString, 
      url: "test.php", 
      cache:false, 
      success: function(html){ 
       if(html=="false"){ 
        alert('Password and Confirm Password does not match!'); 
       } 
      } 
     }); 
    } 
} 
</script> 

Изменить кнопку

<input type="submit" id="Button1" name="proceed" value="Proceed" onclick="check(this)"> 

PHP

<?php 
//include 'connect.php'; 
session_start(); 

if (isset($_POST['password'])) 
{ 
    $found = false; 
    $password = $_POST['password']; 
// $user = $_SESSION['username']; 


    if($password=="test") 
    { 
     echo "true"; 
    } 
    else 
     echo "false"; 
} 
else 
if(isset($_POST['newpassword']) && isset($_POST['confirmpassword'])) 
{ 
    $newpassword = $_POST['newpassword']; 
     $confirmpass = $_POST['confirmpassword']; 

    if($newpassword == $confirmpass) 
    { 
     echo "true"; 
    } 
    else{ 
     echo "false"; 
    } 
} 
?> 
+0

Хорошо, я даю ему попробовать. Наряду с этим правильный код php? – Ayan

+0

Я так думаю, только эхо «false» вместо echo «0», потому что мы проверяем это значение в условии JQuery. – Naresh

+0

В обоих местах 0? Весь скрипт должен быть размещен за пределами документа? Я не знаю, почему он говорит неправильный пароль, который дает правильный пароль. – Ayan