CE1.9.1 Vui lòng đảm bảo rằng vấn đề khớp mật khẩu của bạn trong quá trình đăng ký Người dùng


23

Tôi gặp phải vấn đề này trong CE1.9.1.

Khi Người dùng đăng ký (không thành vấn đề nếu trong quá trình thanh toán hoặc từ liên kết Tạo tài khoản), người dùng sẽ tiếp tục gặp lỗi không khớp với mật khẩu mặc dù mật khẩu được nhập lại chính xác.

Xác thực mẫu không chỉ ra lỗi khớp, nhưng một khi người dùng nhấp vào Đăng ký, nó sẽ trả về lỗi không khớp.

Không có lỗi trong bảng điều khiển chrome ...

Tôi đã tìm thấy điều này: "Vui lòng đảm bảo mật khẩu của bạn khớp" - Lỗi mật khẩu trong Checkout với mẫu Đăng ký mới

Nhưng tôi không tin đó là lỗi tương tự.

Tôi cần phải sửa nó sớm, bất kỳ trợ giúp được đánh giá rất cao!


Điều này sửa lỗi trong giỏ hàng thanh toán nhưng để phần "Tài khoản của tôi" hoạt động, tôi đã phải vô hiệu hóa trình biên dịch trong (admin | system | tools | compilation). (biên dịch lại có thể cũng sẽ hoạt động tốt)
Wiredoug

Câu trả lời:


24

Trẻ em trong lớp Mage_Customer_Model_Customernên sử dụng getPasswordConfirmation()thay vìgetConfirmation()

Trình cập nhật: Trong lớp Mage_Customer_Model_Customer, phương thức validate()đã được thay đổi

Trước v1.9.1:

$confirmation = $this->getConfirmation();

Sau:

$confirmation = $this->getPasswordConfirmation();



Cũng lưu ý rằng bạn cũng nên kiểm tra bất kỳ phần ghi đè nào của bộ điều khiển, không chỉ các mô hình mở rộng lớp này!
benz001

2
Tâm trí cho thấy làm thế nào một cái gì đó rất quan trọng để ngăn chặn một cửa hàng thương mại điện tử cho phép mua hàng có thể làm cho nó thông qua QA và vào một bản phát hành chính thức.
mikemike 10/07/2015

1
Ngoài ra, trong một số tiện ích mở rộng cần thay đổi setConf Confirmation () thành setPasswordConf Confirmation (). Đó là FireCheckout trong trường hợp của tôi. Lớp: TM_FireCheckout_Model_Type_St Chuẩn, phương thức: _validateCustomerData ().
gS lỗi 4/12/2015

5

Cuối cùng, tôi đã có thể giải quyết vấn đề.

Tôi phải đề cập đến điều thực sự không tốt khi các tệp lõi magento có loại vấn đề này khi chúng bảo mật mật khẩu, đoán các nhà phát triển cốt lõi đã quên một số điều đơn giản.

Ok, để khắc phục vấn đề này, bạn phải ghi đè mô hình khách hàng cốt lõi ở địa phương như thế nào app/code/local/Mage/Customer/Model/Customer.php. Trong đó đi đến xung quanh dòng không. 843 (nếu bạn chưa ghi đè) hoặc đi đến dòng if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) { $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6); }và thêm đoạn mã sau bên dưới khối đó:

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

Sau đó, mật khẩu và mật khẩu xác nhận sẽ khớp trên cả hai trang "Thanh toán" và "Tạo tài khoản".

Hy vọng điều này có thể giúp một ai đó.


3

Nếu bất cứ ai vẫn không thể hiểu được, tại sao điều này lại xảy ra: Tiện ích mở rộng Conlabz Useroptin ( http : //www.magentoc Commerce.com/magento-connect/newsletter-double-opt-in-for-customers.html ) có thể gây ra điều này hành vi cũng như.

Bản cập nhật 1.1.0 của tiện ích mở rộng cho biết thêm khả năng tương thích 1.9


3

Tôi có một tiện ích mở rộng đã ghi đè lên AccountControll.php và gặp vấn đề tương tự đối với Nền tảng Magento dưới 1.9.1

Giải pháp của tôi là;

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

Đối với tôi không phải $this->getPasswordConfirmation()cũng không $this->getConfirmation()làm việc. Cả hai trả về một chuỗi trống. Vì vậy, tôi đã kết thúc việc truy cập trực tiếp vào tham số POST, trong /app/code/core/Mage/Customer/Model/Customer.php(có, tốt hơn là sử dụng một bản sao trong /app/code/local):

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

1
ha ha crack tốt :)
Keyur Shah

0

đó là vì sự thay đổi này trong bản cập nhật 1.9.1. Bạn phải cập nhật mã tiện ích mở rộng - Mật khẩu khách hàng không còn được lưu trữ trong văn bản rõ ràng trong quá trình đăng ký.


Tôi hiểu rồi, tôi sẽ kiểm tra mã mở rộng. Cảm ơn!
Hóa đơn

0

Tôi có một vấn đề tương tự như tôi đang sử dụng tiện ích mở rộng của bên thứ ba để thanh toán nên vấn đề này phải đến

Tôi đã giải quyết lỗi đó bằng cách thực hiện các bước sau

1) trong mô-đun của tôi, tôi tìm kiếm confirmation

2) kiểm tra xem nó đang thiết lập dữ liệu cho customermô hình

3) sau đó thay đổi khóa thành password_confirmationtừconfirmation

Tôi làm theo các bước trên để gỡ lỗi và giải quyết nó.


0

Giải pháp của tôi là

$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

Xin chào bạn bè Vấn đề này có thể được giải quyết bằng cách thực hiện các bước dưới đây:

Bước 1: Mở tệp này /app/code/core/Mage/Customer/Model/Customer.php
Bước 2: Tìm dòng này trong Customer.php $confirmation = $this->getPasswordConfirmation(); Bước 3: Thay thế dòng đó bằng $confirmation = $this->getConfirmation();

Vấn đề của bạn đã được giải quyết.


3
Trừ khi đây thực sự là một lỗi cốt lõi, tôi không khuyên bạn nên thay đổi các tệp cốt lõi.
Andrew Kett
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.