Jump to content
Peter.31

Špeciálne znaky v e-mailovej adrese

Recommended Posts

Zákazník zadal do e-mailového poľa adresu s dvomi bodkami, napr. „meno..priezvisko@zakaznik.sk“. Zistili sme, že pokiaľ ide o syntax e-mailových adries, tak by nemali byť dve bodky za sebou (neakceptuje ich Gmail ani Seznam.cz). Dnes zákazník zadal do e-mailového poľa omylom e-mailovú adresu s dvomi bodkami a po potvrdení objednávky sa mu zobrazila hláška „Error 500“. Objednávku nám ale zaevidovalo.

E-mailové polia na PrestaShope upozornia hlásením, ak v e-mailovej adrese chýba znak „@“ alebo ak je tam znak s diakritikou. Avšak neupozornia, ak zákazník omylom zadá dve bodky za sebou, čo vedie k chybe 500 a tiež sme nemohli editovať e-mailovú adresu zákazníka. Zmenili sme ju až priamo v databáze. Úplne podobné chyby sú vo všetkých e-mailových poliach (napr. objednávkový formulár, kontaktný formulár).

Budem vďačný za akúkoľvek pomoc.

Share this post


Link to post
Share on other sites
On 3/2/2020 at 11:14 AM, Peter.31 said:

Zákazník zadal do e-mailového poľa adresu s dvomi bodkami, napr. „meno..priezvisko@zakaznik.sk“. Zistili sme, že pokiaľ ide o syntax e-mailových adries, tak by nemali byť dve bodky za sebou (neakceptuje ich Gmail ani Seznam.cz). Dnes zákazník zadal do e-mailového poľa omylom e-mailovú adresu s dvomi bodkami a po potvrdení objednávky sa mu zobrazila hláška „Error 500“. Objednávku nám ale zaevidovalo.

E-mailové polia na PrestaShope upozornia hlásením, ak v e-mailovej adrese chýba znak „@“ alebo ak je tam znak s diakritikou. Avšak neupozornia, ak zákazník omylom zadá dve bodky za sebou, čo vedie k chybe 500 a tiež sme nemohli editovať e-mailovú adresu zákazníka. Zmenili sme ju až priamo v databáze. Úplne podobné chyby sú vo všetkých e-mailových poliach (napr. objednávkový formulár, kontaktný formulár).

Budem vďačný za akúkoľvek pomoc.

Dávám návod pro Prestashop 1.7, protože jsi neuvedl verzi.

Otevři si soubor ../classes/Validate.php

Najdi si funkci isEmail a doplň do funkce preg_match dvě tečky.

Asi nějak takto:

/\..*\./

 

Share this post


Link to post
Share on other sites

Ďakujem za návod. Mám verziu 1.7.6.1. 

Našiel som síce súbor, v ktorom sa to upravuje, ale po upravení kódu už potom neberie žiadne bodky (z bodky sa potom stane nepovolený znak) napr.: (meno..priezvisko@zakaznik.sk) a (meno.priezvisko@zakaznik.sk).

Share this post


Link to post
Share on other sites
33 minutes ago, Peter.31 said:

Ďakujem za návod. Mám verziu 1.7.6.1. 

Našiel som síce súbor, v ktorom sa to upravuje, ale po upravení kódu už potom neberie žiadne bodky (z bodky sa potom stane nepovolený znak) napr.: (meno..priezvisko@zakaznik.sk) a (meno.priezvisko@zakaznik.sk).

No tak jiný způsob 😉

public static function isEmail($email)
    {
        $pos_ = strpos($email, '..');
        return 
        !empty($email) 
        && 
        preg_match(Tools::cleanNonUnicodeSupport('/^[a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]+[.a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]*@[a-z\p{L}0-9]+(?:[.]?[_a-z\p{L}0-9-])*\.[a-z\p{L}0-9]+$/ui'), $email)
        &&
        $pos_ == 0;
    }

Share this post


Link to post
Share on other sites

Ďakujem veľmi pekne,

teraz to funguje bez problémov. 🙂

Share this post


Link to post
Share on other sites
Posted (edited)

Rád jsem pomohl.

Obdobně lze např. zakázat ruské emaily s koncovkou .ru nebo indické s koncovkou .Ir atd...

Edited by D. Tengler (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More