Титла: Проверка за валиден e-mail Публикувано от: Naka в Jul 28, 2010, 19:05 Потребителят попълва поле за e-mail във формата но освен стандартната синтактична проверка с preg_match() искам да е много по-сигурно и да се провери дали наистина е-майла съществува.
Мисля си за следните стъпки, които да се изпълняват една след друга. 1. синтактична проверка с регулярен израз - има много примери (повечето от които са и грешни) - Но какво ще стане с домейните на кирилица.. Ами името преди @ също може да е уникод??? Ако продължа да използвам даже и добре написан регулярен израз след време ще почне да реже e-mail на кирилица. 2. Проверка дали се резолва домейн частта на e-maila. В php има функця checkdnsrr() с която може да се направи проверка дали съществува MX запис. Но..Какво би станало ако e-maila е валиден но острещният ДНС сървер в момента не работи? Незнам и как се държат mail сърверите ако няма MX запис но има A запис. ако няма MX трябва ли да се прави допълнителна проверка за А? 3. Проверка за Юзер частта /преди @/ мислех си да направя някаква SMPT конекция и като се стигне до RCPT TO:<xxx@yyy.zz> сърверите обикновенно връщат грешка 553 sorry, this recipient is not in my v..... и прекратявам конекцията непосредствено след RCPT TO: независимо дали е приет или отказан юзера. Но mail.yahoo.com никога не съобщава че няма такъв юзер. Той винаги приема но просто не доставя писмото. Ето това е част от конекцията към yahoo.com когато се опитвам да доставя писмо към несъществуващ юсер: naka_2344i_23trw - yahoo отговаря с 250 ОК ??? Код: ... Идеи как би трябвало да се направи най-правилно? Титла: Re: Проверка за валиден e-mail Публикувано от: VladSun в Jul 29, 2010, 01:34 Всичко това е много хубаво (и достатъчно сложно), но бих предпочел да пратя активиращ код на съответния e-mail и при доставяне/прочитане/кликане да се удостовери валидността/съществуването/актуалността на e-mail-а.
Всякакви други (може би освен preg_match-a) проверки отпадат. Титла: Re: Проверка за валиден e-mail Публикувано от: n00b в Jul 29, 2010, 02:16 А някой сървъри правят друго. Казват че са много заети и да опитат пак. След 5 мин примерно.
Така се предпазват от SPAM-a (Host.bg). По този начин цялата проверка отива на кино. Титла: Re: Проверка за валиден e-mail Публикувано от: Naka в Jul 29, 2010, 14:56 бих предпочел да пратя активиращ код на съответния e-mail и при доставяне/прочитане/кликане да се удостовери валидността/съществуването/актуалността на e-mail-а.Идеално решение, само че формата ми не е за регистрация :'( а просто за данни за контакти. и тези данни трябва да са точни в момента на попълването. Ако го изпусна няма как да му взема е-майла освен да му се обадя по тел, и да го питам. Понеже няма регистрация, няма как юзера да се върне и да му съобщя, че не потвърдил е-майла. Може би някакво решение с бисквитки, ама още не съм го измислил. това много ми хареса: http://www.tienhuis.nl/php-email-address-validation-with-verify-probe http://www.tienhuis.nl/files/email_verify_source.php Цитат Незнам и как се държат mail сърверите ако няма MX запис но има A запис. ако няма MX трябва ли да се прави допълнителна проверка за А?Явно трябва да се прави проверка и за А запис. Цитат According to RFC 2821 (referred from http://php.net/manual/en/function.getmxrr.php) an email address can be valid even though there are no MX records for the domain.според http://www.faqs.org/rfcs/rfc2821.html глава 5 Цитат The lookup first attempts to locate an MX Цитат на: n00b А някой сървъри правят друго. Казват че са много заети и да опитат пак. След 5 мин примерно.Така се предпазват от SPAM-a (Host.bg).Така беше Яхоото преди 2-3 години и целият свят изпъшка. Резултатът беше че писмата се бавеха 6-12 часа. Ако му се откаже на mail сервера 1-2 пъти той може да се пробва примерно след 6 часа отново. Титла: Re: Проверка за валиден e-mail Публикувано от: Naka в Jul 30, 2010, 17:55 Някой може ли да помогне как би трябвало да се чете този стандарт?
http://tools.ietf.org/html/rfc5322 т.е какво им означават кодировките в rfc документите точка: 3.2.3. Atom Цитат atext = ALPHA / DIGIT / ; Printable US-ASCII и по надолу 3.4.1. Addr-Spec Specification Цитат addr-spec = local-part "@" domain предполагам че '/' означва ИЛИ ами [CFWS] 1*atext [CFWS] какво ще означава ами това dot-atom-text = 1*atext *("." 1*atext) ??? ??? ??? Не ми стигат регулярните изрази ама сега трябва да им гадая и техните криптографии >:( --------------------------------------- PS: разбрах как се разгадава http://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_Form http://tools.ietf.org/html/rfc822#section-2 |