CE1.9.1 Будь ласка, переконайтеся, що ваш пароль відповідає під час реєстрації користувача


23

Я зустрічаюся з цим питанням у CE1.9.1.

Коли Користувач реєструється (не важливо, під час оформлення замовлення або за посиланням Створити акаунт), користувач продовжує отримувати помилку невідповідності пароля, навіть якщо пароль повторно введено правильно.

Перевірка форми не вказує на невідповідність, але після натискання користувачем кнопки Реєстрація повертає помилку невідповідності.

У хромованій консолі немає помилок ...

Я виявив це: "Будь ласка, переконайтеся, що ваші паролі відповідають" - Помилка пароля в Checkout із новою реєстраційною формою

Але я не вірю, що це одна і та ж помилка.

Мені потрібно виправити це незабаром, будь-яка допомога дуже вдячна!


Це виправляє помилку в кошику оформлення замовлення, але для того, щоб розділ "Мій обліковий запис" працював, мені довелося відключити компілятор в (компіляція адміністратора | системи | інструментів |). (перекомпіляція, ймовірно, також спрацює)
wiredoug

Відповіді:


24

Діти класу Mage_Customer_Model_Customerповинні використовувати getPasswordConfirmation()замість цьогоgetConfirmation()

Upd: У класі Mage_Customer_Model_Customerметод validate()було змінено

До версії 1.9.1:

$confirmation = $this->getConfirmation();

Після:

$confirmation = $this->getPasswordConfirmation();



Зауважте також, що ви також повинні перевірити будь-які скасування контролерів, а не лише моделі, що розширюють цей клас!
benz001

2
Розум бовтається, як щось настільки критичне, щоби зупинити магазин електронної комерції, що дозволяє покупкам, це може зробити це через QA та в офіційний реліз.
mikemike

1
Також у деяких розширеннях потрібно змінити setConfirmation () на setPasswordConfirmation (). Це був FireCheckout у моєму випадку. Клас: TM_FireCheckout_Model_Type_Standard, метод: _validateCustomerData ().
gSorry

5

Нарешті, я зміг вирішити питання.

Я мушу зазначити, що насправді не добре, що основні файли magento мають такі проблеми, коли вони захищають паролі, здогадуйтесь, розробники ядра забули деякі прості речі.

Гаразд, щоб вирішити цю проблему, ви повинні переосмислити основну модель клієнта на місцевому рівні app/code/local/Mage/Customer/Model/Customer.php. У цьому переходьте до лінії ні. 843 (якщо ви цього ще не переотримали) або перейдіть до рядка if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) { $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6); }та додайте наступний код під цим блоком:

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

Після цього пароль і пароль підтвердження будуть відповідати як на сторінках "Оформити замовлення", так і на "Створити акаунт".

Сподіваюся, це може комусь допомогти.



3

У мене є розширення, яке перекривало обліковий запис AccountController.php і могло мати те саме питання для платформ Magento нижче 1.9.1

Моє рішення було;

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

Для мене ні, $this->getPasswordConfirmation()ні $this->getConfirmation()працювали. Обидва повернули порожню рядок. Тож я /app/code/core/Mage/Customer/Model/Customer.phpотримав доступ до параметра POST безпосередньо в (так, краще скопіюйте копію /app/code/local):

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

1
ha ha good crack :)
Кейр Шах

0

це через цю зміну оновлення 1.9.1. Вам доведеться оновити код розширень - паролі клієнтів більше не зберігаються в чистому тексті під час реєстрації.


Бачу, я перевірю коди розширення. Спасибі!
Білл

0

У мене така ж проблема, як я використовую розширення сторонніх розробників для оформлення замовлення, тому ця проблема повинна вийти

Я вирішив цю помилку, виконавши наступні кроки

1) у своєму модулі я шукаю confirmation

2) перевірте, чи він встановлює дані для customerмоделі

3) , а потім змінити ключ password_confirmationзconfirmation

Я виконую вищезазначені кроки для налагодження проблеми та її вирішення.


0

Моє рішення було

$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

Привіт, друзі, цю проблему можна вирішити, виконавши наведені нижче дії.

Крок 1: Відкрийте цей файл /app/code/core/Mage/Customer/Model/Customer.php
Крок 2: Знайдіть цей рядок на Customer.php $confirmation = $this->getPasswordConfirmation(); кроці 3: Замініть цей рядок на $confirmation = $this->getConfirmation();

Ваша проблема зараз вирішена.


3
Якщо це справді не є основною помилкою, я б не рекомендував змінювати основні файли.
Ендрю Кетт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.