Viel zu spät zu diesem Beitrag, aber ich habe etwas anderes zu sagen ...
>> "Are email addresses case sensitive?"
Nun, "Es kommt darauf an ..." (TM)
Einige Unternehmen halten dies für eine gute Idee, und ihre E-Mail-Server erzwingen die Groß- und Kleinschreibung.
Für diese verrückten Orte gilt: "Ja, bei E-Mails wird zwischen Groß- und Kleinschreibung unterschieden."
Hinweis: Nur weil eine Spezifikation besagt, dass Sie etwas tun können, bedeutet dies nicht, dass dies eine gute Idee ist.
Das Prinzip von KISS legt nahe, dass unsere Systeme E-Mails verwenden, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird.
Das Robustheitsprinzip legt nahe, dass wir E-Mails mit Groß- und Kleinschreibung akzeptieren.
Lösung:
- Speichern Sie E-Mails mit Groß- und Kleinschreibung
- Senden Sie E-Mails mit Groß- und Kleinschreibung
- Führen Sie interne Suchvorgänge ohne Berücksichtigung der Groß- und Kleinschreibung durch
Dies würde bedeuten, dass, wenn diese E-Mail bereits vorhanden ist: user@x.com
... und ein anderer Benutzer kommt vorbei und möchte diese E-Mail verwenden: USER@x.com
... dass unsere Suchlogik ohne Berücksichtigung der Groß- und Kleinschreibung eine Fehlermeldung "Diese E-Mail existiert bereits" zurückgibt.
Jetzt müssen Sie eine Entscheidung treffen: Ist diese Lösung in Ihrem Fall angemessen?
Wenn nicht, können Sie Kunden, die Unterstützung für ihre E-Mails mit Groß- und Kleinschreibung benötigen, eine Zusatzgebühr in Rechnung stellen und eine benutzerdefinierte Logik implementieren, die USER@x.com in Ihr System ermöglicht, selbst wenn user@x.com bereits vorhanden ist.
In diesem Fall sieht Ihre E-Mail-Such- / Validierungslogik möglicherweise wie dieser Pseudocode aus:
if (user.paidEmailFee) {
// case sensitive email
query = "select * from users where email LIKE ' + user.email + '"
} else {
// case insensitive email
query = "select * from users where email ILIKE ' + user.email + '"
}
Auf diese Weise erzwingen Sie meistens die Unempfindlichkeit gegenüber Groß- und Kleinschreibung, erlauben Kunden jedoch, für diesen Support zu bezahlen, wenn sie E-Mail-Systeme verwenden, die solchen Unsinn unterstützen.
ps ILIKE ist ein PostgreSQL-Schlüsselwort: http://www.postgresql.org/docs/9.2/static/functions-matching.html