Verificare se esiste email Prestashop
Di seguito vi illustro una semplice guida su come verificare se esiste email prestashop del cliente che si vuole registrare. Classe Validate.php, cerca DNS.
Un problema tipico di Prestashop è che non verifica l’attendibilità dell’email inserita dell’utente, l’utente potrebbe inserire email fasulle oppure inserire errori di digitazione, con eventuali problemi futuri sulla reperibilità del cliente o eventuali problemi di sicurezza con ordini fasulli e conseguenti noie future.
Il principio di questa modifica è inserire nel codice della classe Prestashop che si occupa di verificare se i valori inseriti sono corretti. La classe che andiamo a modificare è Validate.php che trovate nella cartella /classes/.
La funzione php che andremo a chiamare è:
checkdnsrr(array_pop(explode(‘@’,$email)),’MX’)
che va a fare delle chiamate ai dns chiedendo se esiste il dominio per l’email inserita dall’utente.
Aprite questo file ed andate a cercare la riga che contiene la funzione
public static function isEmail($email)
andiamo adesso a sostituire il contenuto del metodo che attualmente è:
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);
e lo sostituiamo con:
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) && checkdnsrr(array_pop(explode("@",$email)),"MX");
Salvate il fate e sostituite la vecchia versione, adesso potrete testare la vostro modifica e vedrete che se mettete un dominio email non esistente, Prestashop darà un errore di email non valida.
Bello, ma non era meglio avere un validatore come tutti gli altri: ti invio una mail e me la confermi così ti attivo l’account?
Si ho soltanto voluto mostrare un alternativa sulla verifica dell’email senza andare ad inviare una mail di conferma.
Salve, molto utile.
Volevo sapere se con aggiornamenti successivi di prestashop la modifica viene persa.
Grazie
sicuramente andrà persa, però credo che riapplicando la stessa procedura può ripristinarla.