Lieber MarkusH.,
Ich habe schonmal ein Login/Registrierscript geschrieben, doch das hab ich mit PDO gemacht. Dieses hier möchte ich aber gern mit MySQLi lösen.
warum?
Du machst etwas sehr gefährliches! Dein Code:
$user = strtolower($_POST["username"]);
[...]
$passwordstatment = $mysql->query( "SELECT password
FROM users
WHERE username = '$user'" );
Durch Deine Umkopiererei von Userinput in scheinbar harmlose Variablennamen übersiehst Du einen SQL-Injection-Angriffsvektor. Besser sieht man die Gefahr ohne die Umkopiererei:
$passwordstatment = $mysql->query(
"SELECT password
FROM users
WHERE username = '".strtolower($_POST["username"])."'"
);
Die vom Benutzer eingegebenen Daten könnten auch keinen Benutzernamen, sondern SQL-Syntax beinhalten (siehe verlinkten Comic). Daher sollst Du das unbedingt lassen!
Warum liest Du nicht eine Liste der vorhandenen Benutzernamen in ein Array, am besten noch mit dem Passwort-Hash, und prüfst in einer Schleife, ob die Kombi passt? Der Anmeldeprozess darf ruhig eine Weile dauern, dann sind auch Brute-Force-Attacken auf Dein Loginscript weniger effektiv.
Liebe Grüße,
Felix Riesterer.