Hi,
also...ich bin gerade an nem LoginScript für n Adminbereich dran. Alles kein Problem, läuft wunderbar, nur würde ich gerne jetzt eine Funktion einbauen, das man nach einer bestimmten Anzahl (in dem Fall 3) fehlgeschlagener Login-Versuche für eine bestimmte Zeit gesperrt wird. Das ganze läuft mit MySQL.
Irgendwie funzt das aber net so wie ich möchte, d.h. die Anzahl der Login-Versuche werden in der Datenbank so wie es soll gespeichert, aber nach x Loginversuchen soll eine Sperrzeit in die Spalte "sperre" gespeichert werden, die sich von time()+sperrzeit
ableitet.....GEHT ABER NET.... Ich bekomm auch keine Fehlermeldung....ich kann fröhlich 50 mal das falsche Passwort eingeben ohne das was passiert..... wenn ich dann das richtige eingebe komme ich halt ganz normal in den geschützen Bereich...
lange rede kurzer Sinn....ich poste am besten mal das Loginscript, vielleicht kann mir jemand weiterhelfen oder eine bessere Variante vorschlagen .... THX !
Wegen dem Problem ist jetzt schon zimlich viel drin gepfuscht, hoffe ihr könnt das auch so entziffern
also...ich bin gerade an nem LoginScript für n Adminbereich dran. Alles kein Problem, läuft wunderbar, nur würde ich gerne jetzt eine Funktion einbauen, das man nach einer bestimmten Anzahl (in dem Fall 3) fehlgeschlagener Login-Versuche für eine bestimmte Zeit gesperrt wird. Das ganze läuft mit MySQL.
Irgendwie funzt das aber net so wie ich möchte, d.h. die Anzahl der Login-Versuche werden in der Datenbank so wie es soll gespeichert, aber nach x Loginversuchen soll eine Sperrzeit in die Spalte "sperre" gespeichert werden, die sich von time()+sperrzeit
ableitet.....GEHT ABER NET.... Ich bekomm auch keine Fehlermeldung....ich kann fröhlich 50 mal das falsche Passwort eingeben ohne das was passiert..... wenn ich dann das richtige eingebe komme ich halt ganz normal in den geschützen Bereich...
lange rede kurzer Sinn....ich poste am besten mal das Loginscript, vielleicht kann mir jemand weiterhelfen oder eine bessere Variante vorschlagen .... THX !
Code:
session_start(); require("$DOCUMENT_ROOT/inc/config.inc.php"); require("$DOCUMENT_ROOT/inc/functions.inc.php"); $timestamp=time()+3600; $maxloginversuche=3; $sperrzeit="7200"; // Sekunden! if ( $username == "" || $passwort == "" ) { $error="noinput"; include("$DOCUMENT_ROOT/inc/error.inc.php"); die; } conn_db(); $query = "SELECT name, pass, logver, sperre, level, lastlogin FROM dlm_admins WHERE name = '".$username."'"; $result = mysql_query($query,$connect); $pruefen = mysql_fetch_array($result,MYSQL_ASSOC); $pass=$pruefen[pass]; $gesperrt=$pruefen[sperre]; $logincount=$pruefen[logver]; if (!$pruefen) { $error="nousername"; include("$DOCUMENT_ROOT/inc/error.inc.php"); die; } if ($pass <> $passwort) { if ( $timestamp < $gesperrt ){ $error="sperre"; include("$DOCUMENT_ROOT/inc/error.inc.php"); die; } elseif ( $timestamp > $gesperrt ){ if (! $gesperrt == "0"){ $deletesperre = "UPDATE dlm_admins SET sperre='0' WHERE name='".$username."'"; mysql_query( $deletesperre, $connect ); } $logver=$logincount+1; $set_errorcounter = "UPDATE dlm_admins SET logver='$logver' WHERE name='".$username."'"; mysql_query( $set_errorcounter, $connect ); $error="passworterror"; include("$DOCUMENT_ROOT/inc/error.inc.php"); die; } if ( $gesperrt == "0" ){ $logver=$logincount+1; $set_errorcounter = "UPDATE dlm_admins SET logver='$logver' WHERE name='".$username."'"; mysql_query( $set_errorcounter, $connect ); if ($logver>=$maxloginversuche-1){ $sperrzeit=time()+$sperrzeit+3600; $set_sperre = "UPDATE dlm_admins SET sperre='$sperrzeit' WHERE name='".$username."'"; mysql_query( $set_sperre, $connect ); $reset_counter = "UPDATE dlm_admins SET logver='0' WHERE name='".$username."'"; mysql_query( $reset_counter, $connect ); $error = "newsperre"; include("$DOCUMENT_ROOT/inc/error.inc.php"); die; } $error = "passworterror"; include("$DOCUMENT_ROOT/inc/error.inc.php"); } die; } if ($pass == "$passwort"){ if ($timestamp < $gesperrt){ $error="sperre"; include("$DOCUMENT_ROOT/inc/error.inc.php"); die; } elseif ($timestamp > $gesperrt){ $reset_sperre = "UPDATE dlm_admins SET sperre='0' WHERE name='".$username."'"; mysql_query( $reset_sperre, $connect ); $reset_counter = "UPDATE dlm_admins SET logver='0' WHERE name='".$username."'"; mysql_query( $reset_counter, $connect ); } } $datum=date("d.m.Y"); $uhrzeit=date("H:i"); $query2 = "UPDATE dlm_admins SET lastlogin='$datum, um $uhrzeit Uhr' WHERE name='".$username."'"; mysql_query( $query2, $connect ) or die ( "Konnte nicht in Datenbank schreiben: ".mysql_error() ); mysql_close( $connect ); $level = $pruefen["level"]; $lastlogin = $pruefen["lastlogin"]; session_register('username'); session_register('passwort'); session_register('level'); session_register('lastlogin'); header ("Location:start.php");
Wegen dem Problem ist jetzt schon zimlich viel drin gepfuscht, hoffe ihr könnt das auch so entziffern
Kommentar