2017-04-13 23 views
0

在我更改密碼功能,使用jQuery驗證程序進行驗證和Ajax調用檢查舊密碼提交處理程序。我已經嘗試過的jQuery AJAX的自定義規則(addMethod)檢查舊password.It了我同時輸入「不正確的密碼」和「此字段爲必填」消息爲空密碼。然後,我嘗試使用下面的提交處理程序中的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"; 
} 
+0

什麼是服務器端代碼校驗密碼功能? –

+0

postUrl應該是:var postUrl ='frontend/checkpassword'; –

+0

_「嗯,你期望它做什麼?你想完成什麼?你已經嘗試過了什麼?**這些嘗試中發生了什麼?請詳細說明:特別是,如果某些東西不起作用,請不要只是聲明:告訴我們它是如何失敗的,如果拋出異常,什麼是異常?(不要只給出類型 - 給出錯誤信息並說出哪一行拋出它。如果存在嵌套異常, 。)**「_(引自: [寫作完美的問題(https://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)) – Andreas

回答

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