CE1.9.1 Accertarsi che il problema di corrispondenza della password durante la registrazione dell'utente


23

Sto riscontrando questo problema in CE1.9.1.

Quando un utente si registra (non importa se è durante il checkout o dal collegamento Crea un account) l'utente continua a ricevere l'errore di mancata corrispondenza della password anche se la password viene reinserita correttamente.

La convalida del modulo non indica una mancata corrispondenza, ma una volta che un utente fa clic su Registra restituisce l'errore di mancata corrispondenza.

Non ci sono errori nella console di Chrome ...

Ho trovato questo: "Assicurati che le tue password corrispondano" - Errore password nel Pagamento con il nuovo modulo di registrazione

Ma non credo sia lo stesso errore.

Ho bisogno di ripararlo presto, qualsiasi aiuto è molto apprezzato!


Questo risolve l'errore nel carrello di checkout ma per far funzionare la sezione "Il mio account" ho dovuto disabilitare il compilatore in (admin | sistema | strumenti | compilazione). (la ricompilazione probabilmente funzionerebbe altrettanto bene)
wiredoug

Risposte:


24

I bambini di classe Mage_Customer_Model_Customerdovrebbero usare al getPasswordConfirmation()posto digetConfirmation()

Aggiornamento: in classe Mage_Customer_Model_Customer, il metodo è validate()stato modificato

Prima della v1.9.1:

$confirmation = $this->getConfirmation();

Dopo:

$confirmation = $this->getPasswordConfirmation();



Nota anche che dovresti controllare anche qualsiasi override del controller, non solo modelli che estendono questa classe!
benz001,

2
La mente sorprende come qualcosa di così critico da fermare un negozio di e-commerce che consente gli acquisti può arrivare attraverso il QA e in una versione ufficiale.
mikemike,

1
Inoltre in alcune estensioni è necessario modificare setConfirmation () in setPasswordConfirmation (). Quello era FireCheckout nel mio caso. Classe: TM_FireCheckout_Model_Type_Standard, metodo: _validateCustomerData ().
gScorry

5

Finalmente sono stato in grado di risolvere il problema.

Devo dire che non è davvero un bene che i file core di magento abbiano questo tipo di problemi quando proteggono le password, immagino che gli sviluppatori principali abbiano dimenticato alcune cose semplici.

Ok, quindi per risolvere questo problema devi sovrascrivere il modello principale del cliente in like locali app/code/local/Mage/Customer/Model/Customer.php. In questo andare alla riga n. 843 (se non hai già eseguito l'overriden) o vai alla riga if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) { $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6); }e aggiungi il seguente codice sotto quel blocco:

//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

Successivamente, la password e la password di conferma corrisponderanno alle pagine "Acquista" e "Crea account".

Spero che questo possa aiutare qualcuno.



3

Ho un'estensione che stava sovrascrivendo AccountController.php e stava avendo lo stesso problema per le piattaforme Magento sotto 1.9.1

La mia soluzione era;

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

Per me né $this->getPasswordConfirmation()né ha $this->getConfirmation()funzionato. Entrambi hanno restituito una stringa vuota. Quindi ho finito per accedere direttamente al parametro POST, in /app/code/core/Mage/Customer/Model/Customer.php(sì, meglio usare una copia in /app/code/local):

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

1
ah ah buona crack :)
Keyur Shah

0

è a causa di questa modifica nell'aggiornamento 1.9.1. Devi aggiornare il codice delle estensioni: le password dei clienti non vengono più memorizzate in chiaro durante la registrazione.


Vedo, controllerò i codici di estensione. Grazie!
Bill

0

Ho lo stesso problema che sto utilizzando l'estensione di terze parti per il checkout, quindi questo problema deve presentarsi

Ho risolto quell'errore facendo i seguenti passi

1) nel mio modulo cerco confirmation

2) verificare che stia impostando i dati per il customermodello

3) quindi cambiare la chiave in password_confirmationdaconfirmation

Seguo i passaggi precedenti per eseguire il debug del problema e risolverlo.


0

La mia soluzione è stata

$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

Ciao amici, questo problema può essere risolto procedendo come segue:

Passaggio 1: Apri questo file /app/code/core/Mage/Customer/Model/Customer.php
Passaggio 2: Trova questa riga al Customer.php $confirmation = $this->getPasswordConfirmation(); passaggio 3: Sostituisci quella riga con $confirmation = $this->getConfirmation();

Il tuo problema è ora risolto.


3
A meno che questo non sia davvero un bug di base, non consiglierei di cambiare i file di base.
Andrew Kett,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.