Fredolin92: Ajax Request funktioniert nicht <- Passwortcheck

Hallo liebe Community,
kurz und knapp! Ich probiere gerade etwas mit Ajax rum und habe mich am folgenden Beispiel probiert: Ajax-Beispiel: Passwortcheck

Ich habe nun zwei Dateien, dessen Quelldateien wie folgt aussehen:

ajax.html:

  
<head>  
  
<title>AJAX-Beispiel</title>  
  
<script type="text/javascript">  
function testekennwortqualitaet(inhalt)  
    {  
        if (inhalt=="")  
        {  
            document.getElementById("sicherheitshinweise").innerHTML="keine Eingabe da";  
            return;  
        }  
        if (window.XMLHttpRequest)  
        {  
            // AJAX nutzen mit IE7+, Chrome, Firefox, Safari, Opera  
            xmlhttp=new XMLHttpRequest();  
        }  
        else  
        {  
            // AJAX mit IE6, IE5  
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
        }  
        xmlhttp.onreadystatechange=function()  
        {  
            if (xmlhttp.readyState==4 && xmlhttp.status==200)  
            {  
                document.getElementById("sicherheitshinweise").innerHTML=xmlhttp.responseText;  
            }  
        }  
        xmlhttp.open("GET","kennworttesten.php?q="+inhalt,true);  
        xmlhttp.send();  
    }  
</script>  
  
</head>  
  
<html>  
  
<input type="password" size="10" value=""  
onchange="testekennwortqualitaet(this.value)" />  
<span id="sicherheitshinweise">hier kommt dann der AJAX-Inhalt</span>  
  
</html>  

Und die kennworttesten.php:

  
<?php  
$passwort = $_GET['q'];  
$sicherheitszahl = 0;  
$sicherheitszahl = strlen($passwort);  
if (preg_match("/[a-z]+/", $passwort)) {  
    $sicherheitszahl = $sicherheitszahl + 5;  
}  
if (preg_match("/[A-Z]+/", $passwort)) {  
    $sicherheitszahl = $sicherheitszahl + 5;  
}  
if (preg_match("/[0-9]+/", $passwort)) {  
    $sicherheitszahl = $sicherheitszahl + 5;  
}  
if ($sicherheitszahl <= 18 ) {  
    echo 'unsicher ('.$sicherheitszahl.' Punkte)';  
}  
elseif ($sicherheitszahl <= 25) {  
    echo 'sicher ('.$sicherheitszahl.' Punkte)';  
}  
elseif ($sicherheitszahl > 25) {  
    echo 'sehr sicher ('.$sicherheitszahl.' Punkte)';  
}  
?>  

Das Script, bzw. der Passwortcheck funktioniert nur mit einem Enter in dem Inputfeld. Ich möchte jedoch, dass es mit einer Änderung des Inhaltes im Feld in Verbindung steht. Wie kann ich dies ändern?

Lieben Gruß,
Felix

  1. Hallo liebe Community,
    kurz und knapp! Ich probiere gerade etwas mit Ajax rum und habe mich am folgenden Beispiel probiert: Ajax-Beispiel: Passwortcheck

    Ich habe nun zwei Dateien, dessen Quelldateien wie folgt aussehen:

    ajax.html:

    <head>

    <title>AJAX-Beispiel</title>

    <script type="text/javascript">
    function testekennwortqualitaet(inhalt)
        {
            if (inhalt=="")
            {
                document.getElementById("sicherheitshinweise").innerHTML="keine Eingabe da";
                return;
            }
            if (window.XMLHttpRequest)
            {
                // AJAX nutzen mit IE7+, Chrome, Firefox, Safari, Opera
                xmlhttp=new XMLHttpRequest();
            }
            else
            {
                // AJAX mit IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.getElementById("sicherheitshinweise").innerHTML=xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","kennworttesten.php?q="+inhalt,true);
            xmlhttp.send();
        }
    </script>

    </head>

    <html>

    <input type="password" size="10" value=""
    onchange="testekennwortqualitaet(this.value)" />
    <span id="sicherheitshinweise">hier kommt dann der AJAX-Inhalt</span>

    </html>

    
    >   
    > Und die kennworttesten.php:  
    > ~~~php
      
    
    > <?php  
    > $passwort = $_GET['q'];  
    > $sicherheitszahl = 0;  
    > $sicherheitszahl = strlen($passwort);  
    > if (preg_match("/[a-z]+/", $passwort)) {  
    >     $sicherheitszahl = $sicherheitszahl + 5;  
    > }  
    > if (preg_match("/[A-Z]+/", $passwort)) {  
    >     $sicherheitszahl = $sicherheitszahl + 5;  
    > }  
    > if (preg_match("/[0-9]+/", $passwort)) {  
    >     $sicherheitszahl = $sicherheitszahl + 5;  
    > }  
    > if ($sicherheitszahl <= 18 ) {  
    >     echo 'unsicher ('.$sicherheitszahl.' Punkte)';  
    > }  
    > elseif ($sicherheitszahl <= 25) {  
    >     echo 'sicher ('.$sicherheitszahl.' Punkte)';  
    > }  
    > elseif ($sicherheitszahl > 25) {  
    >     echo 'sehr sicher ('.$sicherheitszahl.' Punkte)';  
    > }  
    > ?>  
    > 
    
    

    Das Script, bzw. der Passwortcheck funktioniert nur mit einem Enter in dem Inputfeld. Ich möchte jedoch, dass es mit einer Änderung des Inhaltes im Feld in Verbindung steht. Wie kann ich dies ändern?

    Lieben Gruß,
    Felix

    1. onchange="testekennwortqualitaet(this.value)" />

      Das Script, bzw. der Passwortcheck funktioniert nur mit einem Enter in dem Inputfeld. Ich möchte jedoch, dass es mit einer Änderung des Inhaltes im Feld in Verbindung steht. Wie kann ich dies ändern?

      Das http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onchange@title=onchange-Event feuert, wenn das Feld den Focus verliert (verlassen wird). Ob es nur feuert, wenn der alte Wert verändert wird, weiss ich jetzt nicht ohne zu testen. Eine Möglichkeit ist, die Eingabetaste zu drücken. Aber auch die Tab-Taste oder ein Mausklick ausserhalb des Feldes verursacht das.

      Du musst dich fragen, wann genau du das Passwort checken möchtest.

      Nach Eingabe des ersten und jedes weiteren Zeichens? Da kommt das onkeyup-Event infrage. Aber ein Zeichen wird nie ein sicheres Passwort sein, also belästigst du den Schreiber während der Eingabe mit sinnfreien Hinweisen.

      Linuchs

      1. ... und welchen Sinn macht das überhaupt, diese Prüfung per ajax zu machen?

        Dafür ist Javascript nötig und dann kannst du es doch gleich mit Javascript prüfen.

        Als Übungsbeispiel - naja ...

        Linuchs

      2. Om nah hoo pez nyeetz, Linuchs!

        Nach Eingabe des ersten und jedes weiteren Zeichens? Da kommt das onkeyup-Event infrage. Aber ein Zeichen wird nie ein sicheres Passwort sein, also belästigst du den Schreiber während der Eingabe mit sinnfreien Hinweisen.

        Ich empfinde das nicht unbedingt als Belästigung und es ist auch gängige Praxis das so zu machen, etwa indem man neben das Passwortfeld einen Hinweis setzt.

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Span und Spange.

  2. moin,
    ich weiß nicht genau, was du suchst - vielleicht  onkeyup() oder ähnliches statt change().
    Hier <http://de.selfhtml.org/javascript/sprache/eventhandler.htm@title=Eine Referenz>

    Wenn du nicht für ein Wingadget programmierst, würde mich interessieren, warum du natives JS nutzt.
    Mit JQuery wärs übersichtlicher und einfacher ;-)

    Viele Grüße aus LA

    --
    ralphi