Wenn sich beim ersten mal korrekt einloggt, funktioniert es...
Wenn man sich 3 mal falsch einloggt wird man für 5 Minuten gesperrt..
Wenn man sich innerhalb dieser Zeit einloggt, funktioniert es logischerweise nicht. Aber wenn die Zeit abgelaufen ist, und man versucht sich einzuloggen(auch korrektes passwort) dann wird die Zeit von 0 auf 59:59 Minuten erhöht und man kann sich wieder nicht einloggen.
Ich find diesen Fehler allerdings schon seit knapp 2 Stunden nicht.
@Mods, es tut mir Leid das ich hier den Code posten muss (er ist stark verkürzt), da ich absolut kein Zugang zu irgendeinem Space habe und kann die Datei nicht hochladen. (Bitte mich deswegen nicht gleich wieder den Knigge bestätigen lassen).
Code: Alles auswählen
if (isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($HTTP_POST_VARS['logout']) || isset($HTTP_GET_VARS['logout']))
{
// $username und $password(hier ist eine if - wurde verkürzt)
$sql = 'SELECT user_id, username, user_password, user_login_tries, user_last_login_try
FROM ' . USERS_TABLE . '
WHERE username = "' . $username . '"';
$result = $db->sql_query($sql);
if ($row = $db->sql_fetchrow($result))
{
$max_login_attempts = 3;
$login_reset_time = 50;
// If the last login is long ago, then reset user_login_tries and user_last_login_try
if ($row['user_last_login_try'] < (time() - ($login_reset_time * 60)))
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_tries = 0, user_last_login_try = 0
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}
// Check if user are allowed to login or if his login_tries are exceeded
if ($row['user_login_tries'] >= $max_login_attempts)
{
// fehlermeldung mit 3 mal falsch eingeloggt
}
else
{
if (md5($password) === $row['user_password'])
{
// blabla session begin
// Reset login tries
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_tries = 0, user_last_login_try = 0
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
die('eingelogt');
}
else
{
// fehlermeldung passwort falsch
// Only store a failed login attempt
if ($row['user_id'] != ANONYM)
{
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_tries = user_login_tries + 1, user_last_login_try = ' . time() . '
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}
}
}
}
else
{
// fehlermeldung das benutzer bzw. passwort falsch ist
}
}
else
{
$template->assign_var('S_LOGIN_ACTION', 'login.' . $phpEx);
}