Hello,
$sql = mysql_query("SELECT Passwort, Login FROM zugang WHERE Login = '$Login'") OR die(mysql_error());
ich würde das anders abfragen:
$sql = "update $logintable
".
"set login
= now(), ".
" lastclick = now() ". "
session = '".session_id()."', ".
" logged
= 1 ".
"where password
= '".mysql_real_escape_sting($password, $con)."' ".
"and loginname
= '".mysql_real_escape_sting($loginname, $con)."' ".
"and locked
= 0;
$ok = mysql_query($sql, $con);
if($ok and mysql_affected_rows($con) == 1)
{
## login ok, weitermachen
#
# ...
}
else
{
## Fehlerbehandlung
$_errormsg[] = 'Fehler beim Login';
$_errormsg[] = mysql_error($con);
# ...
}
Ich setze voraus, dass auf loginname
ein Unique-Index liegt, um die Verwaltung zu vereinfachen.
Nach obiger Methode hast Du gleich die Loginzeit und den letzten Request eingesetzt, geprüft, ob der Account gesperrt ist, und eine Gegenprüfung für die aktive Session vorbereitet.
Eine "is_logged()"-Funktion kann man dann ähnlich aufbauen, ebenfalls mit Update.
$sql = "update $logintable
".
"set lastclick = now() ". "where
session = '".session_id()."' ".
"and time_to_sec(timediff(now(), lastclick
)) < $maxpause) ".
"and locked
= 0;
Wenn man Trigger und storred Procedures nutzt, kann man das noch viel eleganter machen.
Die Abfrage des Grundes, warum ein Login oder eine Loginbestätigung nicht geklappt haben, macht man erst dann mit einem ensprechenden SELECT, wenn es in Frage kommt. Wir gehen doch erstmal davon aus, dass die User "ordentlich" sind und daher seltener Fehler auftreten, als "anständige" Bestätigungen.
lastclick Spalte mit dem letzten Request des Users
logged Spalte mit einem Wert z.B. 0 für nicht logged, 1 für logged
session Spalte mit der aktuellen Sessionnummer des Users
locked Spalte mit einem Merker für gesperrte User, 0 = frei, >0 = Sperrgrund
$maxpause Dein Konfigurationswert in Sekunden, wie lange eine logische Session
gültig sein soll. Er muss KLEINER sein, als der Wert für die physische
Session, also der Wert des Garbage Collectors von PHP
Außerdem ist das die() hier wieder vollkommen unangebracht.
Ein harzliches Glückauf
Tom vom Berg
http://bergpost.annerschbarrich.de
Nur selber lernen macht schlau