Php 更改html属性后无法将值提交到数据库

Php 更改html属性后无法将值提交到数据库,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我正试图在我的作品中做一个密码更改选项 我想做的是: 1.首先验证当前密码。 2.如果输入的当前密码正确,则“继续”按钮向下移动,并显示一个名为“确认”的新字段。 3.显示时,字段和按钮的属性将更改。 4.然后我想在相应的文件中输入新密码和确认密码,并检查两个字段是否具有相同的值。 5.如果两者具有相同的值,则更新表格,如果没有,则发出警报 问题: 从第4步开始,我就面临这个问题。每当我在这两个字段中给出错误的值时,我得到的错误是“不正确的密码”,而不是“密码和确认密码不匹配!” 我可能会错在哪

我正试图在我的作品中做一个密码更改选项

我想做的是: 1.首先验证当前密码。 2.如果输入的当前密码正确,则“继续”按钮向下移动,并显示一个名为“确认”的新字段。 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

HTML

更新:我尝试了Naresh给出的脚本。它向我显示正确的消息,但不会对数据库产生影响。

更改脚本

把你的按钮换成

PHP


和。您是否检查了当前密码是否有效?如果将所有字段合并在一起,则会更容易。当前密码、新密码、确认新密码然后提交按钮当前密码有效。你加入这个领域是什么意思?我没听懂你的意思。你的意思是要同时显示3个字段并一次性完成所有检查吗???@Ayan是的-如果你需要一个示例,请告诉我好的,我正在尝试。我的php代码是否正确?我想是的,只执行echo false而不是echo 0,因为我们在Jquery的if条件中检查该值。在0的两个位置?整个脚本应该放在文档准备好了吗??我不知道为什么它说密码不正确,只是给出了正确的密码。在0和复制粘贴脚本的两个位置都是,因为它不需要准备文档,因为我们在onclick事件上调用该函数。好的,我按照你说的做了,但它总是显示错误的密码。你介意看看房间吗!html部分??
<?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';
    }
}
?>
        <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">
<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
//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";
    }
}
?>