Password auf Groß-/Kleinschreibung und Sicherheit prüfen

weedo

Erfahrenes Mitglied
Hi,

ich habe eine Funktion, die ein eingegebenes Password auf seine Sicherheit überprüfen soll.

Code:
function chksav(obj) {
  var show = 0;
  pass = obj.value;
  if(pass.indexOf("1","2","3","4","5","6","7","8","9","0") != "-1") {
    show++;
    alert("zahl");
  }
  if(pass.indexOf("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") != "-1") {
    show++;
    alert("buchstabe");
  }
  if(pass.indexOf("^","°","!","\"","§","$","%","&","/","(",")","=","?","`","´","\\","}","]","[","{","²","³","@","€","|","<",">",",",";",":",".","-","_","#","'","+","*","~") != "-1") {
    show++;
    alert("zeichen");
  }
  alert(show);
}

Jetzt treten 2 Probleme auf. Wenn ich jetzt ein Password eingebe, was 12asdf!"§ ist, bekomm ich zwei alerts. einmal mit dem Inhalt buchstabe und einmal mit 1. Eigentlich sollte es aber 4 alerts geben und das versteh ich nicht.

Des Weiteren, wollte ich gerne das Password auf Groß- und Kleinschreibung überprüfen. aber ich weiß nicht wie ich das machen soll... Habt ihr vielleicht einen Tipp für mich?

lg weedo
 
Die indexOf Funktion erwaret nur einen Parameter. Wenn du Sie benutzt dann ich einer Schleife.
btw. Zahlen brauchen keine "
 
Ich fand die Lösung mit einer Schleife nicht sonderlich gut, also hab ich lieber die match() variante versucht.

Das einzige problem, dass ich jetzt habe ist, dass mir mein alert null ausgibt. was mache ich falsch?

Code:
function chksav(obj) {
  var show = 0;
  password = obj.value;
  if (password.match(/(.*[0-9].*[0-9].*[0-9])/))  show += 5 
  if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) show += 5 
  if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  show += 5 
  if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  show += 10 
  if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/))  show += 10 
  if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/))  show += 10 
  if (password.match(/^\w+$/) || password.match(/^\d+$/) )  show -= 10 
  if (show < 101) {
    show = show * 4;
  } else {
    show = 400;
  }
  alert(password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/));
  document.getElementById("passwordsicherheit").style.width = show;
}
 
Ok hab es hinbekommen. Für die Sufu nochmal der fertige Code:

Die Funktionen (teils im internet gefunden):
Code:
function chksav(obj) {
  var show = 0;
  password = obj.value;
  show += password.length * 4
  show += ( checkRepetition(1,password).length - password.length ) * 1
  show += ( checkRepetition(2,password).length - password.length ) * 1
  show += ( checkRepetition(3,password).length - password.length ) * 1
  show += ( checkRepetition(4,password).length - password.length ) * 1
  if (password.match(/(.*[0-9].*[0-9].*[0-9])/))  show += 5 
  if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) show += 5 
  if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))  show += 5 
  if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/))  show += 10 
  if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/))  show += 10 
  if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/))  show += 10 
  if (password.match(/^\w+$/) || password.match(/^\d+$/) )  show -= 10 
  if (show < 0) {
    show = show * -1;
  }
  if (show < 101) {
    breite = show * 4;
    breite = breite + "px";
  } else {
    breite = 400;
    breite = breite + "px";
  }
  document.getElementById("passwordsicherheit").style.width = breite;
}

function checkRepetition(pLen,str) {
    res = ""
    for ( i=0; i<str.length ; i++ ) {
        repeated=true
        for (j=0;j < pLen && (j+i+pLen) < str.length;j++)
            repeated=repeated && (str.charAt(j+i)==str.charAt(j+i+pLen))
        if (j<pLen) repeated=false
        if (repeated) {
            i+=pLen-1
            repeated=false
        }
        else {
            res+=str.charAt(i)
        }
    }
    return res
}

Und im Htmlteil:

HTML:
<!-- Eingefeld --> 
<input type="password" name="password1" id="password1" onKeyUp="chksav(this);" onChange="chklen(this);" style="width: 250px" />

<!-- div zur statusanzeige --> 
<div style="align: left; width: 400px; height: 25px; background: url('sys/images/password_bg.gif');"><div id="passwordsicherheit" style="background: url('sys/images/password.gif'); height: 25px; width: 0px;"></div></div>

lg weedo
 
Ich habe doch noch eine Frage,

wie bekomm ich es hin, das dieses Script auch im Internetexplorer läuft?

lg weedo
 
Schau Dir mal die Fehlermeldung in IE an. Vielleicht war FF nur großzügig.

mfg chmee
 
Was mir gerade noch aufgefallen ist: du bist nachlässig mit der Verwendung von Semikolons. Setz die mal bitte noch an den entsprechenden Stellen.
 

Neue Beiträge

Zurück