Jump to content

Erreur lors de l'inscription client "adresse mail invalide"


clair0bscur

Recommended Posts

Bonsoir ! Après plusieurs recherche sur le net sans résultat, je viens expliquer mon problème sur ce forum en esperant trouver de l'aide & des solutions ... :)

 

J'ai refaite ma boutique en ligne : http://bijoux-clairobscur.com/ en juin dernier, j'ai la version 1.6.0.14 de prestashop. et je rencontre plusieurs bugs depuis sa mise en ligne, la plus embetante étant le message d'erreur que rencontre certains clients lors de l'inscription.

 

Pour avoir posé la question à plusieurs clientes, la majorité était sur mobile, j'ai donc testé sur mon téléphone et en effet, je crois que le problème vient du clavier du mobile, qui vous propose votre adresse mail dès que vous commencer à le taper... la saisi automatique en fait... mais avec un petit espace en plus à la fin de celui ci. Que prestashop n'apprécie pas... Une fois supprimé l'espace à la fin du mal, pas de soucis ca fonctionne... mais il faut le savoir :/  Comment résoudre ce problème qui mine de rien fait perdre pas mal de clients potentiels ?

 

Autre soucis, je me permet d'en parler sur ce même sujet, sur la page "Panier" : http://bijoux-clairobscur.com/commande

Le champs "bon de réduction" ne s'affiche pas chez certaines personnes, un soucis de navigateur je crois ... si vous avez des solutions également, je suis preneuse ^^

 

Merci d'avance pour vos réponses :)

Stéphanie

 

post-546207-0-59542900-1443387091_thumb.jpg

Link to comment
Share on other sites

Bonjour,

 

Pour la validation du mail et son (ou ses espaces) en trop, vérifiez si dans votre fichier /controllers/front/AuthController.php vous avez bien ces lignes (avec le trim(Tools::getValue('email')) et $customer->getByEmail(trim($email), trim($passwd)); dans le bloc protected function processSubmitLogin() lignes 267 et suivantes

    /**
     * Process login
     */
    protected function processSubmitLogin()
    {
        Hook::exec('actionBeforeAuthentication');
        $passwd = trim(Tools::getValue('passwd'));
        $_POST['passwd'] = null;
        $email = trim(Tools::getValue('email'));
        if (empty($email)) {
            $this->errors[] = Tools::displayError('An email address required.');
        } elseif (!Validate::isEmail($email)) {
            $this->errors[] = Tools::displayError('Invalid email address.');
        } elseif (empty($passwd)) {
            $this->errors[] = Tools::displayError('Password is required.');
        } elseif (!Validate::isPasswd($passwd)) {
            $this->errors[] = Tools::displayError('Invalid password.');
        } else {
            $customer = new Customer();
            $authentication = $customer->getByEmail(trim($email), trim($passwd));
            if (isset($authentication->active) && !$authentication->active) {
...

Ensuite, remplacez le bloc, lignes 699 et suivantes:

    protected function processSubmitCreate()
    {
        if (!Validate::isEmail($email = Tools::getValue('email_create')) || empty($email)) {
            $this->errors[] = Tools::displayError('Invalid email address.');
        } elseif (Customer::customerExists($email)) {
            $this->errors[] = Tools::displayError('An account using this email address has already been registered. Please enter a valid password or request a new one. ', false);
            $_POST['email'] = Tools::getValue('email_create');
            unset($_POST['email_create']);
        } else {
            $this->create_account = true;
            $this->context->smarty->assign('email_create', Tools::safeOutput($email));
            $_POST['email'] = $email;
        }
    } 

Par:

    protected function processSubmitCreate()
    {
        if (!Validate::isEmail($email = trim(Tools::getValue('email_create'))) || empty($email)) {
            $this->errors[] = Tools::displayError('Invalid email address.');
        } elseif (Customer::customerExists(trim($email))) {
            $this->errors[] = Tools::displayError('An account using this email address has already been registered. Please enter a valid password or request a new one. ', false);
            $_POST['email'] = trim(Tools::getValue('email_create'));
            unset($_POST['email_create']);
        } else {
            $this->create_account = true;
            $this->context->smarty->assign('email_create', Tools::safeOutput($email));
            $_POST['email'] = $email;
        }
    } 

La fonction trim() supprimant les espaces de début et de fin, vous ne devriez plus avoir ce souci.

Link to comment
Share on other sites

  • 9 months later...

Bonjour à tous,

 

J'ai eu ce problème et il n'était pas causé par Prestashop.

 

J'avais ajouté un formulaire de connexion / inscription dans ma NAV. De fait, sur la page ($page_name = "authentication") j'avais deux champs #email_create et le clic levait le premier champ vide de ma NAV et AuthController renvoyait donc false dans la procédure processSubmitCreate.

 

Pour résoudre le problème j'ai simplement supprimé sur la page AUTHENTICATION mon formulaire d'inscription avec un {if} sur le page_name.

 

A toutes fins utiles pour qqun qui aurait suivi le même chemin que moi.

 

Alexandre

Link to comment
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...