CE1.9.1ユーザー登録時にパスワードが一致することを確認してください


23

CE1.9.1でこの問題が発生しています。

ユーザーが登録するとき(チェックアウト中またはアカウントの作成リンクからかどうかは関係ありません)、ユーザーは、パスワードが正しく再入力されても、パスワード不一致エラーを取得し続けます。

フォームの検証では不一致は示されませんが、ユーザーが[登録]をクリックすると、不一致エラーが返されます。

Chromeコンソールにエラーはありません...

私はこれを見つけました:「パスワードが一致することを確認してください」-新規登録フォームでのチェックアウトでのパスワードエラー

しかし、私はそれが同じエラーだとは思わない。

私はすぐにそれを修正する必要があります、どんな助けも大歓迎です!


これにより、チェックアウトカートのエラーが修正されますが、「マイアカウント」セクションを機能させるには、(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();



また、このクラスを拡張するモデルだけでなく、コントローラーのオーバーライドもチェックする必要があることに注意してください!
benz001

2
心は、購入を許可するeコマースストアを停止するほど重要なものが、QAを経て公式リリースに至るまでにどのように重要なものになるかを振り返ります。
マイクマイク

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

この後、「Checkout」ページと「Create Account」ページの両方でパスワードと確認パスワードが一致します。

これが誰かを助けることを願っています。



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アップデートのこの変更によるものです。拡張機能コードを更新する必要があります-登録時に顧客パスワードがクリアテキストで保存されなくなりました。


なるほど、拡張コードを確認します。ありがとう!
ビル14

0

チェックアウトにサードパーティの拡張機能を使用しているのと同じ問題があるため、この問題が発生します

私は次の手順を実行してそのエラーを解決しました

1)私のモジュールで検索する confirmation

2)customerモデルの設定データであることを確認します

3)次にキーをpassword_confirmationfromに変更します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
これが本当にコアのバグでない限り、コアファイルを変更することはお勧めしません。
アンドリュー・ケット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.