Benutzerregistriereung
Satori
- php
Ich möchte auf meiner Homepage ein Memberbereich einrichten.
Den Login und die Registrirung funktioniert prima.
Jetzt kommt das Problem.
Ich suche ein Befehl, der in meiner Datenbank schaut, ob der Benutzername schon existiert.
In Google hab ich schon gesucht aber nichts gefunden.
Ich hoffe ihr könnt mir weiterhelfen :)
$request=mysql_query("SELECT username FROM users WHERE username='".$_POST['username']."'")
if(mysql_num_rows($request))>0{
echo 'Username vorhanden';
}
else{
echo 'Username nicht vorhanden';
}
z.B.
Danke dir !!
Funktioniert super =)
echo $begrüßung;
Bitte nicht einfach einen unkommentierten und noch dazu fehlerhaften Codehaufen abkippen. Das bringt den Anwender nur scheinbar zum Ziel.
Als erstes müssen gegebenenfalls die Magic Quotes deaktiviert werden.
Dann sind die Eingabedaten auf Vorhandensein und bei Bedarf auf korrekten Inhalt zu prüfen. Ohne das kann man sich den weiteren Verlauf sparen.
Es fehlt der Verbindungsaufbau zum Server, wenn nicht gerade Default-Werte verwendet werden können. Der Erfolg des Verbindungsaufbaus muss kontrolliert werden, und die nachfolgenden Schritte sind in Abhängigkeit davon auszuführen.
$request=mysql_query("SELECT username FROM users WHERE username='".$_POST['username']."'")
Hier liegt ein Kontextwechsel vor, weil Daten in den Kontext "SQL-Statement" gebracht werden sollen. Sie müssen dazu kontextgerecht behandelt werden, wofür es die Funktion mysql_real_escape_string() gibt. Das Ergebnis von mysql_query() ist auch kein Request sondern ein Result. Weiterhin ist es zu Debug-Zwecken keine schlechte Idee, das Statement zunächst in einem String zusammenzubauen.
$query = sprintf("SELECT username FROM users WHERE username='%s'", mysql_real_escape_string($_POST['username']));
Der Erfolg der Ausführung ist zu überprüfen bevor fortgefahren werden kann. Im Fehlerfall wäre eine Alternative angebracht, die dem Anwender weiterhilft.
if ($result = mysql_query($query)) {
if(mysql_num_rows($request))>0{
(Tippfehler. Kein Beinbruch, passiert jedem mal.)
if (mysql_num_rows($result) > 0)
echo 'Username vorhanden';
else
echo 'Username nicht vorhanden';
} else {
// Alternative bei Query-Fehler
}
echo "$verabschiedung $name";
Hallo Satori,
hier bietet es sich an, das Feld für den Benutzernamen zusätzlich datenbankseitig als "unique" zu deklarieren.
Es ist dann unmöglich einen weiteren Datensatz mit dem selben Benutzernamen zu erzeugen.
Viele Grüße
Stefan
Hallo,
hier bietet es sich an, das Feld für den Benutzernamen zusätzlich datenbankseitig als "unique" zu deklarieren.
Es ist dann unmöglich einen weiteren Datensatz mit dem selben Benutzernamen zu erzeugen.
und führt zu der ungemein eleganten Lösung, überhaupt nicht prüfen zu müssen, ob der Benutzername bereits existiert. Wenn das INSERT-Statement wegen Indexverletzung fehlschlägt, dann existierte der Benutzername bereits. Sauber und frei von jeder race condition.
Freundliche Grüße
Vinzenz