ajax调用提交处理程序

时间:2017-04-13 05:06:51

标签: php jquery ajax laravel

在我的更改密码功能中,我使用jquery验证器进行验证,并使用ajax调用来检查提交处理程序中的旧密码。我在jquery中使用自定义规则(addMethod)中的AJAX检查旧密码。它给了我“密码不正确”空密码同时显示“此字段是必填项”消息。然后我在提交处理程序中尝试了Ajax调用,如下所示它正确应用验证但不检查Ajax中的旧密码。

var postUrl = "{{ URL::to('frontend/checkpassword') }}";

$(document).ready(function() {
    $('#passwordForm').validate({
        rules: {
            password: {
                required: true,
                password1: {
                    required: true,
                    minlength: 8
                },
                password2: {
                    required: true,
                    equalTo: '#password1'
                },
            },
            messages: {
                password: {
                    required: "Please enter Old Password",
                },
                password1: {
                    required: "Please enter a password",
                    minlength: "Your password must be at least 8 characters long"
                },
                password2: {
                    required: "Please enter a password",
                    equalTo: "The two passwords do not match!"
                },
            },
        },
        submitHandler: function(form) {
            $.ajax({
                type: "POST",
                url: postUrl,
                data: $("#passwordForm").serialize(),
                async: true,
                beforeSend: function() {
                    $("#loading-image").show();
                },
                success: function(response) {
                    if (response == 0) {
                        $("#loading-image").hide();
                        $('#display').html("Incorrect Password");
                        $('#password1, #password2 ').prop('disabled', true);
                    } else {
                        $("#loading-image").hide();
                        $('#display').html("Correct Password");
                        $('#password1,#password2').removeAttr('disabled');
                    }
                }
            });

            return false;
        }
    });
});

我检查旧密码的代码是

$strPassword = $request->password;
$intSessionUserId=Session::get('sessionUserId');

$user = register::find($intSessionUserId);
$strOldPassword = $user->password1;

if($strPassword==$strOldPassword) {
    echo "1";
}
else {
    echo "0";
}

1 个答案:

答案 0 :(得分:0)

根据你在评论中提到的代码

public function checkPassword(Request $request) { 
    $strPassword = $request->password;
    $intSessionUserId=Session::get('sessionUserId'); 
    $user = register::find($intSessionUserId); 
    $strOldPassword = $user->password1; 
    if($strPassword==$strOldPassword) {
        echo "1"; 
    } else { 
        echo "0"; 
    } 
}

我认为您可能会将您的普通密码与加密密码进行比较。因此,请检查并确认您使用哪种加密方法来加密密码。并加密存储在$strPassword中的密码。这可能会解决您的问题。

我看到你正在使用Laravel Framerowk。所以你可以使用下面的行进行密码哈希比较。

if(Hash::check($strPassword, $strOldPassword)){
    echo "1";
}else {
    echo "0";    
}

参考:https://laravel.com/docs/5.0/hashing