Hallo,
Ich bin gerade dabei ein "registrieren" Modul zu schreiben. Jetzt möchte ich mittels Javascript prüfen, ob der vom User eingegebene Benutzername schon vorhanden ist. Dazu muss das Script auf die MySQL Datenbank zugreifen.
a) mit AJAX abfragen.
b) hast Du mit dieser Prüfung eine Race-Condition, genauer eines der Art
Time of check to time of use.
Um letzteres zu vermeiden müsstest Du den Benutzernamen reservieren, z.B.
für die Dauer einer Session oder bis der Benutzer einen anderen Namen
auswählt.
c) Es ist völlig überflüssig, Spalten abzufragen, die Du nicht benötigst.
Verwende *nicht* SELECT *, wenn es nicht erforderlich ist:
$sql = "SELECT * FROM users WHERE name = '<script type='text/javascript'>newuser.Benutzername.value</script>'";
SELECT COUNT(name) Anzahl WHERE ...
reichte hier aus.
d) Vergißt Du die kontextgerechte Behandlung von variablen Werten wie hier
dem vom Benutzer eingegebenen Namen. Es gibt Mütter, die solche Fehler
ohne Rücksicht auf Verluste ausnutzen :-)
e) Dies gilt nicht nur für die Verwendung im SQL-Kontext, dies gilt auch für
den HTML- und Javascript-Kontext.
Bitte dedlfix' Artikel lesen und beherzigen.
Freundliche Grüße
Vinzenz