0

小さなスクリプトを使用して、碑文フォームでパスワードの強度を確認しています。スクリプトの関連部分は次のとおりです。

    $('#password').keyup(function(){

    var password = $(this).val();
    password = $.trim(password);

    var lettre_min = /[a-z]/;
    var lettre_maj =/[A-Z]/;
    var nombre = /[0-9]/;
    var symbole = /[\`\!\"\?\$\%\^\&\*\(\)\_\-\+\=\{\[\}\]\:\;\@\'\~\#\|\\\<\,\>\.\/]/;

    if(password.length != 0)
    {   
        //password moin de 8 caractères
        if(password.length <8)
        {
            $('.bar').animate({width:'50px',height:'5px'},200).show();
            $('.bar').css('background-color','red');
            $('.error').text('Too short').show();
        }else

        //password faible
        if((password.match(lettre_min)) && password.length <12)
        {
            $('.bar').animate({width:'75px',height:'5px'},200).show();
            $('.bar').css('background-color','red');
            $('.error').text('Weak').show();
        }else

        //password moyen
        //1 type
        if((password.match(lettre_min)) && (password.match(nombre)) && password.length <12)
        {
            $('.bar').animate({width:'100px',height:'5px'},200).show();
            $('.bar').css('background-color','orange');
            $('.error').text('Average').show();
        }else ...

問題は、フォーム入力に文字 (lettre_min) と数字 (nombre) を入力すると、パスワードが平均的であると言わなければならないのに、パスワードが弱いと教えてくれることです。彼は 2 番目の条件を完全に無視します。

何が起こっているのかわかりません=/

PS:別の質問でこれに対する回答が既にある場合は申し訳ありませんが、問題が何であるかさえわからないため、何を検索すればよいかわかりません =/

4

3 に答える 3

0

パスワードの強度をチェックする条件の順序が間違っています。それを修正するには:

if((password.match(lettre_min)) && password.length <12){
   if(password.match(nombre)){
     //average
   }else{
     //weak
   }
}else if(password.length < 8){
   //too short
}else{
   //it must be strong
}
于 2012-07-23T08:37:59.637 に答える
0

実際には、3 番目の条件は 2 番目の条件よりも大きなケースであるため、評価されないと信じる傾向があります。2 番目の If を 3 番目の条件に切り替えることを検討してください。

2 番目の if には小文字だけでなく数字も含めることができます。これは、match() がそのようなものが含まれているかどうかを評価するためです。2 番目の実行を実行する前に、最初に 3 番目の if も数字があるかどうかをチェックします。ない場合は、数字のみをチェックします。文字。

于 2012-07-23T08:24:13.300 に答える
0

クイックソリューション:

//password moyen
        //1 type
        if((password.match(lettre_min)) && (password.match(nombre)) && password.length <12)
        {
            $('.bar').animate({width:'100px',height:'5px'},200).show();
            $('.bar').css('background-color','orange');
            $('.error').text('Average').show();
        } else if((password.match(lettre_min)) && password.length <12)
        {
            $('.bar').animate({width:'75px',height:'5px'},200).show();
            $('.bar').css('background-color','red');
            $('.error').text('Weak').show();
        }

真の場合if((password.match(lettre_min)) && (password.match(nombre)) && password.length <12)if((password.match(lettre_min)) && password.length <12)真です。

于 2012-07-23T08:25:49.290 に答える