php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.08.2005, 22:15  
Gast
 
Beiträge: n/a
Standard wie Doppeleintrag in Datenbank verhindern?

Hallo,
ich habe auf meiner Homepage ein Login-System, bei dem man sich mit Username und Passwort einloggen kann. Man kann sich natürlich auch anmelden. Mit Username und Passwort. Mein Problem ist:
Man kann sich leider noch doppelt anmelden. Man kann also 2mal den Usernamen "Batman" wählen. Das gibt natürlich Probleme beim Login, da 2mal der gleiche Username vorhanden ist.

Wie kann ich verhindern, dass man 2mal den gleichen Usernamen eintragen kann?

mfg,
datmoe
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.08.2005, 22:22  
Gast
 
Beiträge: n/a
Standard

Zitat:
Wie kann ich verhindern, dass man 2mal den gleichen Usernamen eintragen kann?
Mit einem geeigneten Datenbankdesign. Deklariere die Spalte Username als primary key und alle Versuche, den selben Usernamen noch mal einzutragen, werden vom MySQL abgeschmettert. Du brauchst dann nach dem INSERT nur noch zu prüfen, ob mysql_errno > 0 ist. Wenn ja, dann teilst Du dem User das mit, daß sein Wunschname schon vergeben ist.
 
Alt 09.08.2005, 03:31  
Gast
 
Beiträge: n/a
Standard

oder du liest in der tabelle aus, mit dem nick den der user angegeben hat, wenn er fündig wird, iser schon vergeben...
 
Alt 09.08.2005, 03:52  
Erfahrener Benutzer
 
Registriert seit: 30.10.2004
Beiträge: 160
Jacks Rache
Standard

Oder du machst es, indem du das Benutzernamen-Feld auf unique stellst.
Jacks Rache ist offline  
Alt 09.08.2005, 10:07  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Jacks Rache
Oder du machst es, indem du das Benutzernamen-Feld auf unique stellst.
Nicht 'oder'. Ein primary key ist unique.
 
Alt 09.08.2005, 11:23  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ist mit einem PRIMARY KEY nicht evtl. mehr Verwaltungsaufwand verbunden als mit einem Feld, dass nur UNIQUE ist?

Ist nur mal so eine Vermutung.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 09.08.2005, 12:33  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von sen-me
oder du liest in der tabelle aus, mit dem nick den der user angegeben hat, wenn er fündig wird, iser schon vergeben...
Schonmal was von Race Conditions gehört? Warum also kompliziert?

Zitat:
Zitat von Der_Gerhard
Ist mit einem PRIMARY KEY nicht evtl. mehr Verwaltungsaufwand verbunden als mit einem Feld, dass nur UNIQUE ist?
Was meinst du damit? Der Benutzer wird anhand eines eindeutigen Benutzernamen identifiziert. Warum jetzt ein neues, zusätzliches Attribut "ID" anlegen und diesem den PK geben? Wo liegt darin der Sinn?

Basti
Basti ist offline  
Alt 09.08.2005, 12:48  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Es ging darum, dass meikel vorgeschlagen hat, den UserNamen als Primary Key zu definieren.
Die Alternative, die Spalte einfach nur als Unique zu definieren, hat er abgelehnt, weil ein Primary Key ja auch Unique ist.

Ich kann mir aber ganz gut vorstellen, dass ich zur Verwaltung der Benutzer lieber ein ID-Feld als Primary Key verwenden würde.
Der BenutzerName kann beliebigen Unsinn enthalten oder sogar änderbar sein.

Deshalb finde ich es nicht so toll, unbedingt den Primary Key auch auf den Namen auszuweiten (es stand ja nirgends was vom bisherigen Primary Key). Statt dessen würde ich nur Unique nehmen.
Die ID ist eine Zahl und ändert sich garantiert nicht. Für mich ist die daher besser geeignet, ein Schlüssel zu sein.

Meine Frage bezog sich nun darauf, was bei MySQL noch alles an Verwaltungsaufwand (Index etc.) für einen Primary Key getrieben wird, der evtl. für ein Unique-Feld wegfällt.
Einen Unterschied wird es ja wohl geben. Sonst bräuchte man das Schlüsselwort Unique nicht.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 09.08.2005, 12:59  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Der_Gerhard
Ist mit einem PRIMARY KEY nicht evtl. mehr Verwaltungsaufwand verbunden als mit einem Feld, dass nur UNIQUE ist?
Nein, eher weniger. MySQL hat dann weniger zu tun, wenn es einen PK gibt. Und wenn die Bedingung ist, daß der Name eindeutig sein soll und nicht mehrfach vergeben werden darf, dann wäre das für mich die plausibelste Lösung.
 
Alt 09.08.2005, 13:03  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Der_Gerhard
Ich kann mir aber ganz gut vorstellen, dass ich zur Verwaltung der Benutzer lieber ein ID-Feld als Primary Key verwenden würde.
Der BenutzerName kann beliebigen Unsinn enthalten oder sogar änderbar sein.
a. Dein Ding
b. Unsinn kann man mit preg_match abfangen. Einen PK kann man auch ändern. Aber auch da muß man ja darauf achten, daß der neue Name auch einmalig ist.

Es ist wesentlich einfacher, wenn man es MySQL überläßt, auf die Integrität der Tabelle zu achten.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array Inhalte in eine Datenbank über tragen Munsi1 PHP Tipps 2008 5 11.04.2008 13:28
Direkten Zugriff auf Datenbank verhindern heyho PHP Tipps 2008 7 07.02.2008 11:41
schribt nichts in die datenbank Cheesy92 PHP Tipps 2006 9 27.10.2006 14:03
Wann Datenbank öffnen/schließen tayke PHP Tipps 2006 10 24.05.2006 17:29
Mehrere Anwendungen eine Datenbank... Datenbanken 5 15.08.2005 11:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
Eintrag in Datenbank mittels Formular? Datenbanken 5 16.12.2004 17:36
[Erledigt] MySQL findet Datenbank nicht Datenbanken 10 21.10.2004 09:14
[Erledigt] Formulardaten sammeln, und in Datenbank verteilen. PHP Tipps 2004 1 14.08.2004 20:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
doppeleintrag in datenbank, doppeneintraege in mysql verhindern, gleiche namen in datenbank verhindern mysql, mysql doppelte db einträge verhindern, mysql nickname doppel, doppeneintrag in datenbank verhinder., datenbank doppeleintragung, mysql php doppeleintrag verhindern

Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.