Vinzenz Mai: Probleme bei Registrierung über PHP.

Beitrag lesen

Hallo,

es ist keine gute Idee, vorher zu prüfen, ob ein Benutzername bereits verwendet wird, weil dies zu einer Race-Condition führt.

$db = @new mysqli( SQL_HOST, SQL_USER, SQL_PASS, SQL_BASE);

$sql = "SELECT
ID
FROM
users
WHERE
Nickname = ?
LIMIT
1";
$stmt = $db->prepare($sql);
$stmt->bind_param("s", $User);
$stmt->execute();
$stmt->store_result();
if (!$stmt->num-rows) {
echo "Der Benutzername wird bereits verwendet.";
} else {

  
Sinnvoller ist es, einen UNIQUE-Index auf die Spalte Nickname zu setzen, das INSERT zu versuchen. Wird das INSERT erfolgreich ausgeführt, ist alles in Butter. Schlägt die INSERT-Operation wegen einer Schlüsselverletzung fehl, gab es den Nickname bereits in der Tabelle, und Du kannst dem Benutzer die traurige Mitteilung machen, dass er sich einen anderen Nick auswählen soll.  
  
Gibt es irgendeinen anderen Fehler, so informiere den Benutzer, dass die Registrierung im Moment nicht möglich ist - und logge den Fehler, damit Du kontrollieren kannst, wann Fehler auftreten.  
  
Woher kommt eigentlich der Inhalt der Variablen $User, die Du an das Statement bindest?  
  
  
Freundliche Grüße  
  
Vinzenz