Addon:Nach 3 erfolglosen Loginversuchen Sperre für XX Sekunden
Aus VMS1 Tutorial
Die hier beschriebenen Änderungen am Login System Deaktivieren die Loginmöglichkeit nach dreimaliger Eingabe eines falschen Passworts für 10 Minuten.
Datenbank
ALTER TABLE `vms_kontodaten` ADD `f_logins` TINYINT( 2 ) NOT NULL DEFAULT '0', ADD `f_time` INT( 11 ) NOT NULL ;
Änderungen an Dateien
lib/session.lib.php
Suche:
// Wenn es den User garnicht giebt } <|>else|> { $_GET['content'] = '/error/kein_zutritt'; }
ersetze mit:
// Wenn es den User gar nicht gibt } <|>else|> { $_GET['content'] = '/error/kein_zutritt'; db_query('UPDATE '.$db_prefix.'_kontodaten k, vms_userdaten u SET k.f_logins=k.f_logins+1, k.f_time='.<|>time|>().' WHERE u.nickname="'.$_POST['nickname'].'" AND k.uid=u.uid '); } }
jetzt werden schon mal falsche logins geloggt, und die dazugehörige zeit.
dann suchen:
// Login <|>if|> ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) {
ersetzen mit:
// Login <|>if|> ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) { $f_check = <|>mysql_fetch_array|>(db_query('SELECT k.f_logins,k.f_time FROM '.$db_prefix.'_kontodaten k LEFT join '.$db_prefix.'_userdaten u ON u.uid=k.uid WHERE u.nickname="'.<|>addslashes|>($_POST['nickname']).'" LIMIT 1')); <|>if|>($f_check['f_logins']>2 && $f_check['f_time']>(<|>time|>()-600)){ $_GET['content'] = '/error/kein_zutritt'; }<|>else|>{ <|>if|>($f_check['f_logins']>2){ db_query('UPDATE '.$db_prefix.'_kontodaten k, vms_userdaten u SET k.f_logins=0 WHERE u.nickname="'.<|>addslashes|>($_POST['nickname']).'" AND k.uid=u.uid '); }
Unter:
// Wenn beim User alles O.K. ist! <|>if|> ($login_check['status'] == 1 ) {
das einfügen:
<|>if|>($f_check['f_logins']==1 || $f_check['f_logins']==2){ db_query('UPDATE '.$db_prefix.'_kontodaten k, '.$db_prefix.'_userdaten u SET k.f_logins=0 WHERE u.nickname="'.$_POST['nickname'].'" AND k.uid=u.uid '); }
damit nach einem erfolgreichen Login die Anzahl der Versuche auf 3 zurückgesetzt wird.