CE1.9.1 Upewnij się, że hasło pasuje do problemu podczas rejestracji użytkownika


23

Ten problem występuje w CE1.9.1.

Gdy użytkownik rejestruje się (nie ma znaczenia, czy dzieje się to podczas realizacji transakcji, czy z linku Utwórz konto), użytkownik wciąż otrzymuje błąd niedopasowania hasła, nawet jeśli hasło zostało ponownie wprowadzone poprawnie.

Sprawdzanie poprawności formularza nie oznacza niedopasowania, ale gdy użytkownik kliknie przycisk Zarejestruj, zwraca błąd niezgodności.

W konsoli Chrome nie ma błędów ...

Znalazłem to: „Upewnij się, że hasła pasują do siebie” - Błąd hasła w kasie z nowym formularzem rejestracyjnym

Ale nie wierzę, że to ten sam błąd.

Muszę to naprawić wkrótce, każda pomoc jest bardzo mile widziana!


To naprawia błąd w koszyku, ale aby sekcja „Moje konto” działała, musiałem wyłączyć kompilator (admin | system | narzędzia | kompilacja). (ponowna kompilacja prawdopodobnie też by zadziałała)
wiredoug

Odpowiedzi:


24

Dzieci klasy Mage_Customer_Model_Customerpowinny używać getPasswordConfirmation()zamiastgetConfirmation()

Aktualizacja: W klasie zmieniono Mage_Customer_Model_Customermetodęvalidate()

Przed wersją 1.9.1:

$confirmation = $this->getConfirmation();

Po:

$confirmation = $this->getPasswordConfirmation();



Pamiętaj również, że powinieneś również sprawdzić wszelkie nadpisania kontrolerów, a nie tylko modele rozszerzające tę klasę!
benz001

2
Umysł zastanawia się, jak coś tak krytycznego, że powstrzymanie sklepu e-commerce zezwalającego na zakupy, może przejść przez kontrolę jakości do oficjalnej wersji.
mikemike,

1
Również w niektórych rozszerzeniach należy zmienić setConfirmation () na setPasswordConfirmation (). To był FireCheckout w moim przypadku. Klasa: TM_FireCheckout_Model_Type_Standard, metoda: _validateCustomerData ().
gSorry,

5

Wreszcie udało mi się rozwiązać problem.

Muszę wspomnieć, że naprawdę nie jest dobrze, że pliki rdzenia Magento mają tego rodzaju problemy, gdy zabezpieczają hasła, zgadnij, że programiści rdzeni zapomnieli o kilku prostych rzeczach.

Ok, więc aby rozwiązać ten problem, musisz zastąpić podstawowy model klienta w lokalnym app/code/local/Mage/Customer/Model/Customer.php. Idź dookoła linii nr. 843 (jeśli jeszcze nie zastąpiłeś) lub przejdź do wiersza if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) { $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6); }i dodaj następujący kod poniżej tego bloku:

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

Następnie hasło i hasło potwierdzające będą pasować zarówno na stronach „Kasa”, jak i „Utwórz konto”.

Mam nadzieję, że to może komuś pomóc.



3

Mam rozszerzenie, które zastępowało AccountController.php i miało ten sam problem dla platform Magento poniżej 1.9.1

Moje rozwiązanie było;

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

Dla mnie ani $this->getPasswordConfirmation()nie $this->getConfirmation()działał. Oba zwróciły pusty ciąg. Skończyło się na bezpośrednim dostępie do parametru POST w /app/code/core/Mage/Customer/Model/Customer.php(tak, lepiej użyj kopii w /app/code/local):

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

1
ha ha good crack :)
Keyur Shah

0

to z powodu tej zmiany w aktualizacji 1.9.1. Musisz zaktualizować swój kod rozszerzenia. Hasła klienta nie są już zapisywane w postaci zwykłego tekstu podczas rejestracji.


Rozumiem, sprawdzę kody rozszerzeń. Dzięki!
Bill

0

Mam taki sam problem, jak przy kasie używam rozszerzenia strony trzeciej, więc ten problem musi nadejść

Rozwiązałem ten błąd, wykonując następujące czynności

1) w moim module szukam confirmation

2) sprawdź, czy ustawia dane dla customermodelu

3) następnie zmień klucz na password_confirmationzconfirmation

Wykonuję powyższe kroki, aby debugować problem i go rozwiązać.


0

Moje rozwiązanie było

$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

Cześć przyjaciele Ten problem można rozwiązać, wykonując poniższe czynności:

Krok 1: Otwórz ten plik /app/code/core/Mage/Customer/Model/Customer.php
Krok 2: Znajdź ten wiersz w Customer.php $confirmation = $this->getPasswordConfirmation(); kroku 3: Zamień ten wiersz na $confirmation = $this->getConfirmation();

Twój problem został już rozwiązany.


3
O ile to naprawdę nie jest podstawowy błąd, nie zalecałbym zmiany podstawowych plików.
Andrew Kett
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.