CE1.9.1 Veuillez vous assurer que votre problème de correspondance de mot de passe lors de l'inscription de l'utilisateur


23

Je rencontre ce problème dans CE1.9.1.

Lorsqu'un utilisateur s'inscrit (peu importe que ce soit lors du paiement ou à partir du lien Créer un compte), l'utilisateur continue d'obtenir l'erreur de non-concordance de mot de passe, même si le mot de passe est ressaisi correctement.

La validation du formulaire n'indique pas une erreur de correspondance, mais une fois qu'un utilisateur clique sur Enregistrer, il renvoie l'erreur de non-concordance.

Il n'y a aucune erreur dans la console chrome ...

J'ai trouvé ceci: "Veuillez vous assurer que vos mots de passe correspondent" - Erreur de mot de passe lors du paiement avec le nouveau formulaire d'inscription

Mais je ne pense pas que ce soit la même erreur.

J'ai besoin de le réparer bientôt, toute aide est grandement appréciée!


Cela corrige l'erreur dans le panier de commande, mais pour que la section "Mon compte" fonctionne, j'ai dû désactiver le compilateur dans (admin | system | tools | compilation). (la
recompilation

Réponses:


24

Les enfants de classe Mage_Customer_Model_Customerdevraient utiliser getPasswordConfirmation()au lieu degetConfirmation()

Upd: En classe Mage_Customer_Model_Customer, la méthode a validate()été modifiée

Avant la v1.9.1:

$confirmation = $this->getConfirmation();

Après:

$confirmation = $this->getPasswordConfirmation();



Notez également que vous devez également vérifier les remplacements de contrôleur, pas seulement les modèles qui étendent cette classe!
benz001

2
L'esprit s'interroge sur la façon dont quelque chose de si critique pour arrêter une boutique de commerce électronique permettant des achats peut passer par le contrôle qualité et dans une version officielle.
mikemike

1
Dans certaines extensions, vous devez également changer setConfirmation () en setPasswordConfirmation (). C'était FireCheckout dans mon cas. Classe: TM_FireCheckout_Model_Type_Standard, méthode: _validateCustomerData ().
gSorry

5

Enfin, j'ai pu résoudre le problème.

Je dois mentionner qu'il n'est vraiment pas bon que les fichiers core de magento aient ce genre de problèmes lorsqu'ils sécurisent les mots de passe, je suppose que les développeurs principaux ont oublié des choses simples.

Ok, donc pour résoudre ce problème, vous devez remplacer le modèle client principal en local comme app/code/local/Mage/Customer/Model/Customer.php. Dans ce passage à la ligne no. 843 (si vous ne l'avez pas déjà remplacé) ou allez à la ligne if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) { $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6); }et ajoutez le code suivant sous ce bloc:

//To match passwords in both Create account and Checkout register pages start
    if ( Mage::app()->getRequest()->getServer('HTTP_REFERER') == Mage::getUrl('customer/account/create') )
      $confirmation = $this->getPasswordConfirmation();
    else
      $confirmation = $this->getConfirmation();
    //To match passwords in both Create account and Checkout register pages end

Après cela, le mot de passe et le mot de passe de confirmation correspondront sur les pages "Commander" et "Créer un compte".

J'espère que cela pourrait aider quelqu'un.



3

J'ai une extension qui remplaçait le AccountController.php et avait le même problème pour les plates-formes Magento en dessous de 1.9.1

Ma solution était;

if (version_compare(Mage::getVersion(), '1.9.1', '<=')) {        
$customer->setPasswordConfirmation($request->getPost('confirmation'));
}

if (version_compare(Mage::getVersion(), '1.9.0', '>=')) {
$customer->setConfirmation($request->getPost('confirmation'));
}

2

Pour moi $this->getPasswordConfirmation()ni $this->getConfirmation()travaillé ni travaillé. Les deux ont renvoyé une chaîne vide. J'ai donc fini par accéder directement au paramètre POST, dans /app/code/core/Mage/Customer/Model/Customer.php(oui, il vaut mieux utiliser une copie dans /app/code/local):

if (isset($_REQUEST['confirmation']))
    $confirmation = $_REQUEST['confirmation'];
else
    $confirmation = $this->getPasswordConfirmation();

1
ha ha bonne crack :)
Keyur Shah

0

c'est à cause de ce changement dans la mise à jour 1.9.1. Vous devez mettre à jour votre code d'extensions - Les mots de passe des clients ne sont plus stockés en texte clair lors de l'inscription.


Je vois, je vais vérifier les codes d'extension. Merci!
Bill

0

J'ai un même problème que j'utilise l'extension tierce pour le paiement, donc ce problème doit venir

J'ai résolu cette erreur en suivant les étapes suivantes

1) dans mon module je recherche confirmation

2) Vérifiez qu'il définit des données pour le customermodèle

3) puis changez la clé en password_confirmationdeconfirmation

J'ai suivi les étapes ci-dessus pour déboguer le problème et le résoudre.


0

Ma solution était

$confirmation = $this->getPasswordConfirmation(); // test works for Create, fails for Checkout
    if ($password != $confirmation) {
        $confirmation = $this->getConfirmation(); // test works for Checkout fails for Create
        if ($password != $confirmation) {
            $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
        }
    }

-3

Salut les amis Ce problème peut être résolu en procédant comme suit:

Étape 1: ouvrez ce fichier /app/code/core/Mage/Customer/Model/Customer.php
Étape 2: recherchez cette ligne à l' Customer.php $confirmation = $this->getPasswordConfirmation(); étape 3: remplacez cette ligne par $confirmation = $this->getConfirmation();

Votre problème est maintenant résolu.


3
À moins qu'il ne s'agisse vraiment d'un bogue de base, je ne recommanderais pas de modifier les fichiers de base.
Andrew Kett
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.