CE1.9.1 Пожалуйста, убедитесь, что ваш пароль совпадает с проблемой при регистрации пользователя


23

Я столкнулся с этой проблемой в CE1.9.1.

Когда пользователь регистрируется (неважно, во время проверки или по ссылке «Создать учетную запись»), пользователь продолжает получать ошибку несоответствия пароля, даже если пароль введен правильно.

Проверка формы не указывает на несоответствие, но как только пользователь нажимает «Зарегистрироваться», возвращается ошибка несоответствия.

В консоли chrome нет ошибок ...

Я нашел это: «Пожалуйста, убедитесь, что ваши пароли совпадают» - Ошибка пароля при оформлении заказа с новой регистрационной формой

Но я не верю, что это та же ошибка.

Мне нужно исправить это в ближайшее время, любая помощь с благодарностью!


Это исправляет ошибку в корзине покупок, но чтобы заставить работать раздел «Моя учетная запись», мне пришлось отключить компилятор в (admin | system | tools | compilation). (перекомпиляция, вероятно, тоже
подойдет

Ответы:


24

Дети класса Mage_Customer_Model_Customerдолжны использовать getPasswordConfirmation()вместоgetConfirmation()

Upd: в классе Mage_Customer_Model_Customerметод validate()был изменен

До v1.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()сработало. Оба вернули пустую строку. Поэтому я получил прямой доступ к параметру POST в /app/code/core/Mage/Customer/Model/Customer.php(да, лучше использовать копию в /app/code/local):

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

1
ха-ха, хороший крэк :)
Кейур Шах,

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.