AW: Loginscript
Man kann auch die Ergebnismenge von MySQL abfragen, wenn man das Passwort dazu überprüft:
Da ein AUTO_INCREMENT immer bei 1 anfängt, kann man die UserID bei "Nichterfolg" auf 0 setzen und das im Script abfragen:
PHP:
$sql = sprintf("SELECT userid FROM users WHERE username='%s' AND password='%s'",$username,md5($password));
if (!$res = mysql_query($sql)) {
die("Fehler in der Query: ".mysql_error());
}
if (mysql_num_rows($res)) {
$row = mysql_fetch_assoc($res);
$userid = $row["userid"];
} else {
$userid=0;
}
Alternativ kann man das auch so machen, was genauso funktioniert:
PHP:
function login($username,$passwort) {
if(!$conn = mysql_connect($dbserver,$dbuser,$dbpass)) {
die("Fehler bei der Datenbankverbindung: ".mysql_error());
}
if(!mysql_select_db($dbname,$conn)) {
die("Fehler bei der Datenbankwahl: ".mysql_error());
}
$sql = sprintf("SELECT userid FROM users WHERE username='%s' AND passwort='%s'",$username,md5($passwort));
if (!$res = mysql_query($sql,$conn)) {
die("Fehler in der Query: ".mysql_error());
}
if (mysql_num_rows($res)) {
@mysql_free_result($res);
return true;
}
return false;
}
Die Funktion gibt zurück, ob der Nutzer und das Passwort korrekt sind, also TRUE oder FALSE und damit kann man dann arbeiten, jedoch ist das die simpelste aller Authentifizierungen. Besser wäre eine Funktion, mit der man sich einloggt, diese dann die Session-ID noch in die DB schreibt und dann testest du auf jeder Seite, ob die Session-ID mit der in der Datenbank übereinstimmt und lässt dann die Seite zu. Das wäre eine sicherere Variante.
Mit der hier aufgeführten Funktion müsste man halt den Namen und das Passwort in der Session speichern und dann auch immer auf jeder Seite abfragen, ob die Daten übereinstimmen. Eine zusätzlich Überprüfung der Session-ID ist halt sicherer.
Immer dran denken, beim Ausloggen die Sessiondaten zu löschen
.