Bu yazıya geç kaldım, ama söyleyecek biraz farklı bir şeyim var ...
>> "Are email addresses case sensitive?"
Eh, "Bu bağlıdır ..." (TM)
Bazı kuruluşlar bunun iyi bir fikir olduğunu düşünür ve e-posta sunucuları büyük / küçük harf duyarlılığını zorunlu kılar.
Yani, bu çılgın yerler için, "Evet, E-postalar büyük / küçük harfe duyarlıdır."
Not: Bir spesifikasyonun bir şey yapabileceğinizi belirtmesi, bunun iyi bir fikir olduğu anlamına gelmez.
KISS ilkesi düşündürmektedir bizim sistemleri harf duyarsız e-posta kullanabilir.
Sağlamlık ilkesi, büyük / küçük harfe duyarlı e-postaları kabul ettiğimizi önerir.
Çözüm:
- E-postaları büyük / küçük harfe duyarlı olarak depolayın
- Büyük / küçük harf duyarlılığı olan e-postalar gönderin
- Büyük / küçük harfe duyarlı olmayan dahili aramalar yapın
Bu, bu e-posta zaten varsa: user@x.com anlamına gelir
... ve başka bir kullanıcı gelir ve bu e-postayı kullanmak ister: USER@x.com
... büyük / küçük harfe duyarlı olmayan arama mantığımızın "Bu e-posta zaten var" hata iletisini döndüreceğini söyledi.
Şimdi, bir karar vermeniz gerekiyor: Bu çözüm sizin durumunuz için yeterli mi?
Değilse, büyük / küçük harfe duyarlı e-postaları için destek talep eden müşterilerden kolaylık ücreti alabilir ve user@x.com zaten mevcut olsa bile USER@x.com'un sisteminize girmesine izin veren özel mantık uygulayabilirsiniz.
Bu durumda, e-posta arama / doğrulama mantığınız şu sahte kod gibi görünebilir:
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 + '"
}
Bu şekilde, çoğunlukla büyük / küçük harf duyarsızlığını uygularsınız, ancak müşterilerin bu saçmalıkları destekleyen e-posta sistemleri kullanıyorlarsa bu destek için ödeme yapmasına izin verirsiniz.
ps ILIKE bir PostgreSQL anahtar kelimesidir: http://www.postgresql.org/docs/9.2/static/functions-matching.html