Автор Тема: Валидиране на email / допустими символи  (Прочетена 8449 пъти)

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Имам функция за проверка на email. работи и е направена по стандарт.
Домейн частта след @ се проверява по МХ запис и там всичко е наред.
А юзер частта се проверявя синтактично. Проблема е че email стандарта допуска ужасно много символи в юзер частта. Допускатъ се например тези символи !#$%&'*+\/=?^`{|}~
Което е не само грозно а и не вярвам някой да има такъв е-маил


Искам да я доработя и да огранича символите в юзер частта, така че да е съвместимо с повече от известните mail доставчици:

това са допустимите символи на основните
abv      [a-z] [0-9] [.]  [_]
hotmail [a-z] [0-9] [.]  [-] [_]
gmail     [a-z] [0-9] [.]
yahoo   [a-z] [0-9] [.]  [_]

Засега нещата се очертават към [a-z] [0-9] точка тире и underscore.
Искам да включа обаче и кирилца ??? какво мислите. Други стандарти и правила забелязали ли сте.

ако го напрявя така:
[a-z] [а-я] [0-9] [.] [-] [_]
дали някъде няма да изкочи проблем?

Ами малки и големи букви. Тези майли правят ли разлика между
NaKa@gmail.com и naka@gmail.com или третират NaKa и naka за един същи юзер.


« Последна редакция: Apr 27, 2015, 13:29 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

d0ni

  • Напреднали
  • *****
  • Публикации: 183
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #1 -: Apr 27, 2015, 15:44 »
Леко встрани от темата - не знам доколко е известно, но gmail стрип-ват точките. T.e. имейл до n.a.k.a@gmail.com/n.aka@gmail.com/etc ще се получи от naka@gmail.com. Може би би искал да вземеш това предвид при проверка дали такъв имейл съществува в базата.
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #2 -: Apr 27, 2015, 16:10 »
Леко встрани от темата - не знам доколко е известно, но gmail стрип-ват точките. T.e. имейл до n.a.k.a@gmail.com/n.aka@gmail.com/etc ще се получи от naka@gmail.com. Може би би искал да вземеш това предвид при проверка дали такъв имейл съществува в базата.
Това не е вярно. Имам три имейла в gmail и трите са с точки.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Валидиране на email / допустими символи
« Отговор #3 -: Apr 27, 2015, 16:23 »
Леко встрани от темата - не знам доколко е известно, но gmail стрип-ват точките. T.e. имейл до n.a.k.a@gmail.com/n.aka@gmail.com/etc ще се получи от naka@gmail.com. Може би би искал да вземеш това предвид при проверка дали такъв имейл съществува в базата.
Това не е вярно. Имам три имейла в gmail и трите са с точки.
По-точно казано, в Gmail адресите точките са без значение. По този въпрос неотдавна разработчиците се наложи да кърпят стабилна дупка - писмата бяха видими от всякакви акаунти спрямо точките, но човек можеше да си направи отделни регистрации с тях, при което друг човек можеше да си направи регистрация с твоя адрес, но друга конфигурация на точките и можеше да ти чете пощата. Текущо съществува само една регистрация, независимо от точките, като акаунтът се асоциира с такава конфигурация на точките, с каквато е регистриран първоначално. Може да пробваш да влезеш в адресите си без точки или с друга конфигурация на точките.

Naka, по принцип като неписан стандарт е прието пощенските адреси да не са чувствителни към регистъра (главни/малки) на буквите и в повечето пощенски услуги това се спазва, като не съм попадал на публична такава, в която да не е така. Но е възможно в настройките на сървъра да се укаже да се прави разлика спрямо регистъра, дори са ми попадали такива сървъри, неприятно е, колкото споменатите от теб допълнителни позволени символи и би трябвало да вземеш такова отношение към регистъра, каквото и към въпросните специални символи.
« Последна редакция: Apr 27, 2015, 16:43 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #4 -: Apr 27, 2015, 17:01 »
Но е възможно в настройките на сървъра да се укаже да се прави разлика спрямо регистъра, дори са ми попадали такива сървъри, неприятно е, колкото споменатите от теб допълнителни позволени символи и би трябвало да вземеш такова отношение към регистъра, каквото и към въпросните специални символи.

Не можах да те разбера  ??? какво за 'допълнителните позволени символи'

Колкото за малки и големи букви му намерих решение: записвам го email-а в базата така както е въведен - а пък маил сървера на който ще се праща да му мисли и да си ги интерпретира малките и големите букви както си иска.
« Последна редакция: Apr 27, 2015, 17:06 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Валидиране на email / допустими символи
« Отговор #5 -: Apr 27, 2015, 17:15 »
Имах предвид при теб да се съобразиш толкова с възможността конкретният пощенски сървър да прави разлика между големи и малки букви, колкото и ще се съобразиш с поддръжката на символите !#$%&'*+\/=?^`{|}~
Т.е., както си решил да не допускаш вписване в базата на адреси, съдържащи тези символи, не допускай и вписване в базата на отделни записи на адресите спрямо регистъра. Т.е., гледай да нямаш отделни записи в базата за NaKa@gmail.com и naka@gmail.com, като бих ти препоръчал записът да е само с малки букви. А дали ще забраниш въвеждане на главни букви, или след въвеждане ще правиш буквите малки, преди да впишеш адреса в базата, това е по-добре да си го решиш сам, спрямо твоите ситуация, възможности и удобство.
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Demayl

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: XUbuntu,FreeBSD
  • Window Manager: Xfce
    • Профил
    • WWW
Re: Валидиране на email / допустими символи
« Отговор #6 -: Apr 27, 2015, 19:09 »
Засега ползвам /^[A-Z0-9\._\%\+-]+@/i и не съм имал грижи
Активен

d0ni

  • Напреднали
  • *****
  • Публикации: 183
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #7 -: Apr 27, 2015, 19:30 »
Това не е вярно. Имам три имейла в gmail и трите са с точки.

Пробвай да си пратиш мейл до някой от акаунтите без точката и тогава ще говорим пак :-)
Активен

d0ni

  • Напреднали
  • *****
  • Публикации: 183
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #8 -: Apr 27, 2015, 19:34 »
По темата, валидирам юзър частта с:

[a-z0-9][a-z0-9_\.-]* с case insensitive flag. Задължително ги записвай с lowercase в базата, ще ти спести мъки.
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #9 -: Apr 27, 2015, 20:49 »
Това не е вярно. Имам три имейла в gmail и трите са с точки.

Пробвай да си пратиш мейл до някой от акаунтите без точката и тогава ще говорим пак :-)
Защо да го правя? Имейлите ми са от типа bai.hui@gmail.com и така ги давам на хората, а и аз съм пращал. Защо да  махам точката, като пращам или друг като праща?
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Валидиране на email / допустими символи
« Отговор #10 -: Apr 27, 2015, 21:14 »
Защо да го правя?
За да разбереш, че в Gmail адресите точките имат само визуално значение. Че няма значение дали изпращачът е изписал точката (или една торба точки, ако ще), или не - все ти ще получиш писмото. И че няма значение дали си изписал точката (или една торба точки, ако щеш) при влизане в акаунта ти - все в твоя акаунт ще влезеш. Никой не те кара да даваш адресите си без точки :)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #11 -: Apr 27, 2015, 21:58 »
Аха!  :) Ми знам ли?! Не мъ грее особено. Пиша си точките и толкоз.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #12 -: Apr 28, 2015, 09:45 »
Засега ползвам /^[A-Z0-9\._\%\+-]+@/i и не съм имал грижи
% и + за какво са?
urlencode ? ама това кодиране е за url параметрите след домейна и ?
за юзера и домейна не знам да се ползва urlencode

Задължително ги записвай с lowercase в базата, ще ти спести мъки.

какви мъки.... при търсене?
бих ги записал в lowercase само ако съм абсолютно сигурен, че няма сървер в света който да прави ралика между големи и малки букви.
« Последна редакция: Apr 28, 2015, 09:50 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

BRADATA

  • Напреднали
  • *****
  • Публикации: 833
  • Distribution: Slackware/Mint/CentOS
  • Window Manager: console/KDE/LXDE
    • Профил
    • WWW
Re: Валидиране на email / допустими символи
« Отговор #13 -: Apr 28, 2015, 10:46 »
Засега ползвам /^[A-Z0-9._%+-]+@/i и не съм имал грижи
% и + за какво са?
urlencode ? ама това кодиране е за url параметрите след домейна и ?
за юзера и домейна не знам да се ползва urlencode

Задължително ги записвай с lowercase в базата, ще ти спести мъки.

какви мъки.... при търсене?
бих ги записал в lowercase само ако съм абсолютно сигурен, че няма сървер в света който да прави ралика между големи и малки букви.
http://stackoverflow.com/questions/9807909/are-email-addresses-case-sensitive
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Re: Валидиране на email / допустими символи
« Отговор #14 -: Apr 28, 2015, 12:28 »
http://www.gossamer-threads.com/lists/qmail/users/111026

сега го пробвах. вярно е. Qmail-a при доставяне преобразува имената в lowercase.
така че ако сървера е Qmail
naka@example.com и NaKa@example.com ще отидат на едно и също място на юзера 'naka'

Но ако в системата имаш юзер NAKA или NaKa той никога няма да получи мейл независимо как го пращаш.
Активен

Perl - the only language that looks the same before and after encryption.

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Безплатен eMail
Живота, вселената и някакви други глупости
BULFON 2 2547 Последна публикация Jun 22, 2004, 16:39
от Hapkoc
Html email
Идеи и мнения
console 8 3867 Последна публикация Aug 29, 2008, 11:48
от Naka
Xampp пращане на email
Кошче
axeii1 1 2435 Последна публикация Jan 26, 2009, 01:38
от go_fire
email server
Сървъри
exit 23 11448 Последна публикация Oct 10, 2009, 17:57
от ntrance
Архивиране на email
Настройка на програми
nslave 2 1776 Последна публикация Jan 25, 2017, 17:13
от laskov