Formát emailu – validační pravidlo – je OK?
- Kcko
- Člen | 468
Ahoj,
dlouhodobě používám standardně addRule(Form::EMAIL).
Nikdy nebyl s ničím problém, dneska jsem si všiml, že nám padají objednávky při importu do jiného (cizího systému).
Vinou je to, že člověk zadal e-mail ve formátu aaa@˘bbb.cz
a docvakl si tam nechtěný znak (nevím jestli to byl přesně tenhle
nebo jiný).
Je možné, že podle RFC je to OK, podle Nette validátoru je to tento pattern
<?php
public static function isEmail($value)
{
$atom = "[-a-z0-9!#$%&'*+/=?^_`{|}~]"; // RFC 5322 unquoted characters in local-part
$alpha = "a-z\x80-\xFF"; // superset of IDN
return (bool) preg_match("(^
(\"([ !#-[\\]-~]*|\\\\[ -~])+\"|$atom+(\\.$atom+)*) # quoted or unquoted
@
([0-9$alpha]([-0-9$alpha]{0,61}[0-9$alpha])?\\.)+ # domain - RFC 1034
[$alpha]([-0-9$alpha]{0,17}[$alpha])? # top domain
\\z)ix", $value);
}
?>
tak je možné, že to je validní znak, nicméně systém 3 strany hlásí, že doména není validní, protože to kontrolují dle TLD a celé to spadne.
Nechci rozporovat pro mě relativně složité REGEXP pravidlo, ale podle online email validátorů adresa neprojde, v tomto případě ano.
Jak se k tomu postavit?
Editoval Kcko (1. 3. 2022 10:52)
- Kcko
- Člen | 468
uestla napsal(a):
Snad jsem to pochopil správně, ale je potřeba odlišit 2 věci:
- formální validitu e-mailu – tam ti pomůže Nettí validace
- požadavky na formát třetích stran
Nejde zachytit případnou chybu při posílání e-mailu třetí straně a přidat chybu do formuláře?
Ahoj pochopil,
- Nepomůže, zadej si do svého formuláře
`
pepicek123321@˘seznam.cz`
a tohle není přeci validní e-mail, nejde na něj zareagovat (je jedno jestli odpovím v Thunderbirdu nebo PHPkem) - Koresponduje s 1.
Náš nákupní proces je brutálně složitý, přidávám si vlastní validační zjednodušené pravidlo něco ve smyslu
<?php
preg_match('~.+@[A-Za-z0-9\.-]+~', $email);
?>
které je taková obezlička, aby podchytilo ty znaky co tam nemají dělat (a hlavně následuje až po Nettím validátoru).
Editoval Kcko (1. 3. 2022 11:26)
- Kcko
- Člen | 468
Už jsem to pochopil více … https://www.punycoder.com/
Ta moje adresa se převede na IDN, je to totiž stále validní doména /
adresa, ale neexistující a jim to spadne, já jsem si to u sebe
„ošetřil“ výše zmíněným postupem, který za mě není OK, ale
jelikož 3 strana má svoje řešení napsané, nějak zvláštně (nevím
proč jim spadne celý import vinou jedné „špatné“ emailové adresy), ale
to budu řešit už s klientem.