Eine Sache ist mir außerdem noch unklar. Wenn ich die Verbindungsdaten zur DB fehlerhaft in der register.php eintrage und versuche, mich zu registrieren, kommt der Fehler 'Der Benutzername ist bereits vergeben.'
Hier der entsprechende Abschnitt:
$mysqli = @new mysqli('xxx', 'xxx', 'xxx', 'xxx');
if ($mysqli->connect_error) {
$message['error'] = 'Datenbankverbindung fehlgeschlagen: ' . $mysqli->connect_error;
}
$query = sprintf(
"INSERT INTO users (username, password)
SELECT * FROM (SELECT '%s', '%s') as new_user
WHERE NOT EXISTS (
SELECT username FROM users WHERE username = '%s'
) LIMIT 1;",
$mysqli->real_escape_string($_POST['f']['username']),
$mysqli->real_escape_string($_POST['f']['password']),
$mysqli->real_escape_string($_POST['f']['username'])
);
$mysqli->query($query);
if ($mysqli->affected_rows == 1) {
$message['success'] = 'Neuer Benutzer (' . htmlspecialchars($_POST['f']['username']) . ') wurde angelegt, <a href="login.php">weiter zur Anmeldung</a>.';
header('Location: http://' . $_SERVER['HTTP_HOST'] . '/login.php');
} else {
$message['error'] = 'Der Benutzername ist bereits vergeben.';
}
$mysqli->close();
Mir ist unklar, warum er trotz einer erfüllten Bedingung in den else-Block springt und die falsche Meldung ausgibt.