CE1.9.1 โปรดตรวจสอบให้แน่ใจว่ารหัสผ่านของคุณตรงกันระหว่างการลงทะเบียนผู้ใช้


23

ฉันพบปัญหานี้ใน CE1.9.1

เมื่อผู้ใช้ลงทะเบียน (ไม่สำคัญว่าจะเป็นในระหว่างการเช็คเอาต์หรือจากลิงก์สร้างบัญชี) ผู้ใช้จะได้รับข้อผิดพลาดที่ไม่ตรงกันแม้ว่ารหัสผ่านจะถูกป้อนซ้ำอย่างถูกต้อง

การตรวจสอบความถูกต้องของฟอร์มไม่ได้บ่งบอกถึงข้อผิดพลาด แต่เมื่อผู้ใช้คลิกที่ลงทะเบียนระบบจะส่งคืนข้อผิดพลาดที่ไม่ตรงกัน

ไม่มีข้อผิดพลาดในคอนโซล Chrome ...

ฉันพบสิ่งนี้: "โปรดตรวจสอบให้แน่ใจว่ารหัสผ่านของคุณตรงกัน" - ข้อผิดพลาดของรหัสผ่านใน Checkout พร้อมแบบฟอร์มลงทะเบียนใหม่

แต่ฉันไม่เชื่อว่ามันเป็นข้อผิดพลาดเดียวกัน

ฉันต้องการแก้ไขเร็ว ๆ นี้ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก!


สิ่งนี้แก้ไขข้อผิดพลาดในรถเข็นเช็คเอาท์ แต่เพื่อให้ส่วน "บัญชีของฉัน" ทำงานฉันต้องปิดการใช้งานคอมไพเลอร์ใน (admin | ระบบ | เครื่องมือ | การรวบรวม) (การคอมไพล์ใหม่อาจใช้ได้เช่นกัน)
wiredoug

คำตอบ:


24

เด็ก ๆ ในชั้นเรียนMage_Customer_Model_Customerควรใช้getPasswordConfirmation()แทนgetConfirmation()

การอัปเดต: ในชั้นเรียน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

ในที่สุดฉันก็สามารถที่จะแก้ปัญหาได้

ฉันต้องพูดถึงมันไม่ดีจริงๆที่ไฟล์วีโอไอพีหลักมีปัญหาเช่นนี้เมื่อพวกเขารักษาความปลอดภัยรหัสผ่านเดานักพัฒนาหลักลืมสิ่งที่ง่าย

app/code/local/Mage/Customer/Model/Customer.phpตกลงดังนั้นเพื่อแก้ไขปัญหานี้คุณจะต้องแทนที่รูปแบบของลูกค้าหลักในท้องถิ่นเช่น ในที่ไปรอบ ๆ หมายเลขบรรทัด 843 (หากคุณยังไม่ได้ overriden) หรือไปที่บรรทัด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

หากใครยังไม่สามารถเข้าใจสาเหตุที่เกิดขึ้น: ส่วนขยายของ Conlabz Useroptin ( http://www.magentocommerce.com/magento-connect/newsletter-double-opt-in-for-customers.html ) ส่วนขยายพฤติกรรมเช่นกัน

การอัปเดต 1.1.0 ของส่วนขยายดังกล่าวเพิ่มความเข้ากันได้ 1.9


3

ฉันมีส่วนขยายที่เอาชนะ AccountController.php และมีปัญหาเดียวกันกับ Magento Platforms ด้านล่าง 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
ฮ่าฮ่าดีมาก :)
Keyur Shah

0

มันเป็นเพราะการเปลี่ยนแปลงนี้ในการอัปเดต 1.9.1 คุณต้องอัปเดตรหัสส่วนขยาย - รหัสผ่านของลูกค้าจะไม่ถูกจัดเก็บในข้อความที่ชัดเจนระหว่างการลงทะเบียน


ฉันเห็นฉันจะตรวจสอบรหัสส่วนขยาย ขอบคุณ!
Bill

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
ฉันจะไม่แนะนำให้เปลี่ยนไฟล์หลัก
Andrew Kett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.