Hey, erneut vielen Dank für Deine Mühe! Ich weiß nicht woran es liegt, aber manchmal blinkt die Grafik garnicht, dafür aber wenn ich es irgendwie 3min später teste wieder. Ich habe deine Variante probiert, aber es leider irgendwie nicht hinbekommen, das mit meiner zu verbinden, da mein Script ja noch das "Rating" überprüft. Ich kann es ja einfach mal posten:
PHP-Code:
<script type="text/javascript" language="JavaScript">
<!--
function fnCheck(){
if (document.formpass.txtPass.value.length >=3){
window.setTimeout(fnPasswdCheck(),1000)
}else{
document.getElementById('passlevel').innerHTML = '<img src="img/icons/safety_low.gif">';
}
}
function fnPasswdCheck()
{
var pass = document.formpass.txtPass.value; //Password in Variable speichern
var rating = 100; //Variable um Sicherheitsrating zu speichern
var optimalPasswordLength = 10;
var numericChar = false; //Variable fuer Zahlen
var bigChar = false; //Variable fuer Grossbuchstaben
var smallChar = false; //Variable fuer Kleinbuchstaben
var specialChar = false; //Variable fuer Sonderzeichen
var passwordLength = pass.length; //Variable um Passwordlange zu speichern
//pro fehlendem Zeichen auf optimale Laenge werden vom Rating 5 Punkte abgezogen
var dif = optimalPasswordLength-passwordLength;
if (dif>0){
rating = rating - (dif*5);
}
//Ueberpruefen
for(var i=0;i<passwordLength;i++) {
var ascii = pass.charCodeAt(i);
if (ascii>=48 && ascii<=57){ numericChar=true; //Speichern wenn ein Zahlenwert vorkommt
}else if (ascii>=65 && ascii<=90){ bigChar=true; //Speichern wenn ein Grossbuchstabe vorkommt
}else if (ascii>=97 && ascii<=122){ smallChar=true; //Speichern wenn ein Kleinbuchstabe vorkommt
}else if (ascii>=32 && ascii<=126){ specialChar=true; //Speichern wenn ein Sonderzeichen vorkommt
}
}
//Jeweils Punkte vom Rating abziehen wenn keine Klein-, Großbuchstaben, Sonderzeichen, Zahlen enthalten sind
if(!smallChar) {
rating -=12;
}
if(!bigChar) {
rating -=12;
}
if(!numericChar) {
rating -=12;
}
if(!specialChar) {
rating -=12;
}
//Sicherheitsstufe anzeigen
if (rating <50){
document.getElementById('passlevel').innerHTML = '<img src="img/icons/safety_low.gif" width="131" height="14">';
document.getElementById('passlevel_txt').innerHTML = 'niedrig';
}else if (rating <70 && pass.length<19){
document.getElementById('passlevel').innerHTML = '<img src="img/icons/safety_middle.gif" width="131" height="14">';
document.getElementById('passlevel_txt').innerHTML = 'mittel';
}else if (rating >80 || pass.length>19){
document.getElementById('passlevel').innerHTML = '<img src="img/icons/safety_high.gif" width="131" height="14">';
document.getElementById('passlevel_txt').innerHTML = 'hoch';
}
}
//-->
</script>
Und HTML:
PHP-Code:
<table width="646" border="0" cellspacing="0" cellpadding="0">
<form name="formpass" method="post" action="">
<tr>
<td width="246">
Passwort:
<input type="password" size="25" maxlength="50" name="txtPass" onKeyUp="fnCheck()">
</td>
<td id="passlevel" width="144"><img src="img/icons/safety_none.gif"></td>
<td id="passlevel_txt" width="256">keine</td>
</tr></form>
</table>
Jetzt habe ich zusätzlich einen weiteren Fehler gefunden: Wenn ich z.B. eine richtig lange Eingabe mache und diese dann mit einem mal lösche (also ganz schnell mit gedrückter Taste und nicht mit einzelnem Tastendruck), passiert es, dass der Text hierbei z.B. von "hoch" nicht mehr "auf "niedrig" springt, sondern "hoch" bleibt. Woran könnte das denn liegen?