Hallo
Ich habe ein registrierungsscript, dass eigentlich als solches funktionniert.
Aber ich möchte noch abfragen ob ein User bereits besteht.
das ist überflüssig, wenn man es geschickt anstellt.
//Daten ermitteln mit "$_POST"
$nickname =($_POST["nickname"]);
$kennwort =($_POST["kennwort"]);
$nachname =($_POST["nachname"]);
$vorname =($_POST["vorname"]);
$alte =($_POST["alte"]);
$ort =($_POST["ort"]);
$plz =($_POST["plz"]);
da die Daten in der Variablen $_POST enthalten sind, ist ein Umkopieren völlig überflüssig und verschleiert nur die Herkunft der Daten.
//Daten formatieren
$benutzer[$nickname]["Nickname"] = "$nickname";
$benutzer[$nickname]["Kennwort"] = "$kennwort";
$benutzer[$nickname]["Nachname"] = "$nachname";
$benutzer[$nickname]["Vorname"] = "$vorname";
$benutzer[$nickname]["Alte"] = "$alte";
$benutzer[$nickname]["Ort"] = "$ort";
$benutzer[$nickname]["Plz"] = "$plz";
$benutzer[$nickname]["Aktiv"] = '1';
Aha, nun werden die Daten noch ein weiteres Mal kopiert. Noch überflüssiger.
,[...]
//Überprüfen ob benutzername bereiz besteht
$sql = "SELECT COUNT(*) FROM benutzerdaten WHERE nickname = '$nickname' and kennwort = '$kennwort'";
Diese Anweisung enthält gleich mehrere Fehler:
a) verläßt Du Dich anscheinend auf die Magic Quotes.
Dieses dämliche Feature wird hoffentlich bald aus PHP verschwinden.
Stattdessen solltest Du die Funktion mysql_real_escape_string() verwenden,
um die Daten entsprechend dem Kontext, hier MySQL, zu behandeln,
gegebenenfalls - wie im Handbuch beschrieben - vorher stripslashes() auf
die Daten anwenden.
b) könnte es sein, dass jemand einen bestehenden Nick ausgewählt hat, aber
natürlich ein anderes Kennwort gewählt hat. Dann wird das Ergebnis 0 sein,
obwohl der Benutzername bereits vorhanden ist.
c) ist das sowieso überflüssig, wenn Du einen eindeutigen Index auf die Spalte
nickname setzt.
Versuche dann ein INSERT der neuen Daten.
Wenn es erfolgreich ist,
Gebe dem Benutzer positive Rückmeldung
Sonst
Wenn Schlüsselverletzung vorliegt
Sage dem Benutzer, dass der Nick bereits vergeben ist
Sonst
Gebe die allgemeine Fehlermeldung aus
Ende Wenn
Ende Wenn
Freundliche Grüße
Vinzenz