CE1.9.1 사용자 등록시 비밀번호가 일치하는지 확인하십시오


23

CE1.9.1에서이 문제가 발생했습니다.

사용자가 등록 할 때 (체크 아웃 중이거나 계정 만들기 링크에서 발생하더라도) 암호를 올바르게 다시 입력하더라도 사용자는 암호 불일치 오류를 계속받습니다.

양식 유효성 검사는 불일치가 아니라 사용자가 등록을 클릭하면 불일치 오류를 반환합니다.

크롬 콘솔에 오류가 없습니다 ...

나는이 발견 : "확인하십시오 있는지 암호 일치"- 새로운 등록 양식을 체크 아웃에서 비밀번호 오류

그러나 나는 그것이 같은 오류라고 생각하지 않습니다.

곧 고쳐야합니다. 어떤 도움이라도 대단히 감사합니다!


이것은 결제 장바구니의 오류를 수정하지만 "내 계정"섹션이 작동하게하려면 (admin | system | tools | compilation)에서 컴파일러를 비활성화해야했습니다. (재 컴파일도 가능할 것입니다)
wiredoug

답변:


24

수업의 어린이는 대신에 Mage_Customer_Model_Customer사용해야 getPasswordConfirmation()합니다getConfirmation()

Upd : 클래스 Mage_Customer_Model_Customer에서 메소드 validate()가 변경되었습니다.

v1.9.1 이전 :

$confirmation = $this->getConfirmation();

후:

$confirmation = $this->getPasswordConfirmation();



또한이 클래스를 확장하는 모델뿐만 아니라 컨트롤러 재정의도 확인해야합니다!
벤츠 001

2
구매를 허용하는 전자 상거래 상점을 중지하여 QA를 통해 공식 릴리스로 만들 수있는 방법이 무엇인지에 대해 생각합니다.
mikemike

1
또한 일부 확장에서는 setConfirmation ()을 setPasswordConfirmation ()으로 변경해야합니다. 제 경우에는 FireCheckout이었습니다. 클래스 : TM_FireCheckout_Model_Type_Standard, 메소드 : _validateCustomerData ().
gSorry

5

마지막으로 문제를 해결할 수있었습니다.

magento 코어 파일이 암호를 보호 할 때 이런 종류의 문제가 있다는 것은 실제로 좋지 않다는 것을 언급해야합니다. 핵심 개발자가 간단한 것을 잊어 버린 것 같습니다.

좋아,이 문제를 해결하려면 핵심 고객 모델을 local과 같이 재정의해야합니다 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를 재정의하는 확장 프로그램이 있으며 1.9.1 이하의 Magento 플랫폼에 대해 동일한 문제가 발생했습니다.

내 솔루션은;

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
ha ha good crack :)
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.