Aqua: (PERL) -> (MySQL) ->UNIQUE Feld -> Welcher Error an Perl?

Hallo!

Ein Webdienst bietet einen internen bereich.
Der Login findet mit der kombination von Username und Passwort statt.

Bei der anmeldung wird überprüft,
oder bereits ein anderer user der gewünschten Usernamen hat.

Wenn nicht, dann wird die Anmeldung vervollstaendigt und
der User bekommt seinen login mit dem gewünschten usernamen
und passwort.

jetzt gibt es aber ein Problem:

In der zwischenzeit waehrend der Ausgabe
"Gratuliere der Username ist noch vorhanden"
und der passwort-Eingabe und vervollstaendigung der Anmeldung
vergehen einige Sekunden bis Minuten Zeit.

Der Punkt:

In diesem Zeitraum könnte sich theoretisch ein anderer
User bereits angemeldet haben mit dem Usernamen,
der vorher als "Frei und registrierbar" angegeben wurde.

Und genau da kommen wir zur Frage:

Welche Möglichkeit habe ich in PERL den Fehler,
den MySQL zurückgibt, aufzufangen und dann einen
entsprechenden "Leider ist der Username schon vergeben"
text auszugeben, wenn MySQL versucht in dem UNIQUE Feld "username"
einen Bereits vorhanden Usernamen nochmals einzufügen...??

MySQL schreit ja dann auf weil das Feld UNIQUE ist und
wenn ich da ein 2. mal den selben wert einfügen will kommt ein error,
die Frage ist nur die ich das mit PERL so verarbeite
dass ich eine dementsprechende Meldung an den User im Browser ausgeben kann.

Ich mach ja nach dem 1. Test ob der Username eh frei ist
nur mehr ein  i$dbh->do("insert into table values ('','Aqua','pass')");
also fall der Name Aqua in der Zwischenzeit schon vergeben
wurde muss ich immer noch die Möglichkeit haben dem User
das auch mitzuteilen....

Danke!
Aqua

  1. Hallo,

    Ein Webdienst bietet einen internen bereich.
    Der Login findet mit der kombination von Username und Passwort statt.

    Bei der anmeldung wird überprüft,
    oder bereits ein anderer user der gewünschten Usernamen hat.

    Wenn nicht,

    dann wird der Name registriert (in die Tabelle geschrieben), so dass er bei der nächsten anstehenden Anmeldeprüfung bereits nicht mehr als neuer Name akzeptiert wird. Erst, wenn das erfolgreich war, erfolgt die Ausgabe "Gratuliere der Username ist möglich" und erst dann

    wird die Anmeldung vervollstaendigt und
    der User bekommt seinen login mit dem gewünschten usernamen
    und passwort.

    jetzt gibt es aber ein Problem:

    Das gibt es dann nicht mehr ;-))
    Selbst, wenn zwei gleichzeitig den selben Namen anfordern, gewinnt der, welcher einige zehntel Sekunden schneller war. Der Andere bekommt nur gesagt: "Der Name ist bereits registriert, bitte versuchen Sie einen anderen."

    Für Anmeldeversuche, die dann nicht abgeschlossen werden (zu erkennen an Name ohne Passwort), empfiehlt sich ein regelmäßiges
    DELETE ... WHERE Passwort IS NULL ...

    viele Grüße

    Axel