Ajax Request funktioniert nicht <- Passwortcheck
Fredolin92
- javascript
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
Hallo liebe Community,
kurz und knapp! Ich probiere gerade etwas mit Ajax rum und habe mich am folgenden Beispiel probiert: Ajax-Beispiel: PasswortcheckIch 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
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
... 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
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
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