CE1.9.1 Bitte stellen Sie sicher, dass Ihr Passwort bei der Benutzerregistrierung nicht zutrifft

23

Ich stoße auf dieses Problem in CE1.9.1.

Wenn sich ein Benutzer registriert (egal ob beim Auschecken oder über den Link "Konto erstellen"), erhält der Benutzer weiterhin den Fehler, dass das Kennwort nicht übereinstimmt, obwohl das Kennwort erneut korrekt eingegeben wurde.

Die Formularvalidierung zeigt keine Nichtübereinstimmung an, aber sobald ein Benutzer auf Registrieren klickt, wird der Nichtübereinstimmungsfehler zurückgegeben.

Es gibt keine Fehler in der Chromkonsole ...

Ich habe Folgendes gefunden: "Bitte stellen Sie sicher, dass Ihre Passwörter übereinstimmen" - Passwortfehler bei der Kaufabwicklung mit neuem Registrierungsformular

Aber ich glaube nicht, dass es der gleiche Fehler ist.

Ich muss es bald beheben, jede Hilfe wird sehr geschätzt!

Rechnung
quelle
Dies behebt den Fehler im Checkout-Warenkorb, aber um den Abschnitt "Mein Konto" zum Laufen zu bringen, musste ich den Compiler in (admin | system | tools | compilation) deaktivieren. (
Neukompilierung

Antworten:

24

Kinder der Klasse Mage_Customer_Model_Customersollten getPasswordConfirmation()statt verwendengetConfirmation()

Update: In der Klasse Mage_Customer_Model_Customerwurde die Methode validate()geändert

Vor v1.9.1:

$confirmation = $this->getConfirmation();

Nach:

$confirmation = $this->getPasswordConfirmation();


Bogdan
quelle
Beachten Sie auch, dass Sie auch alle Controller-Overrides überprüfen sollten, nicht nur Modelle, die diese Klasse erweitern!
benz001
2
Der Verstand wundert sich darüber, wie etwas so Kritisches, dass es ein E-Commerce-Geschäft, das Einkäufe zulässt, nicht mehr durch die Qualitätssicherung in eine offizielle Veröffentlichung bringen kann.
Mikemike
1
In einigen Erweiterungen muss setConfirmation () in setPasswordConfirmation () geändert werden. Das war in meinem Fall FireCheckout. Klasse: TM_FireCheckout_Model_Type_Standard, Methode: _validateCustomerData ().
gSorry
5

Endlich konnte ich das Problem lösen.

Ich muss erwähnen, dass es wirklich nicht gut ist, dass Magento-Core-Dateien diese Art von Problemen haben, wenn sie die Passwörter schützen. Vermutlich haben die Core-Entwickler einige einfache Dinge vergessen.

Ok, um dieses Problem zu beheben, müssen Sie das Kernkundenmodell auf lokaler Ebene überschreiben app/code/local/Mage/Customer/Model/Customer.php. Gehen Sie dazu in die Zeile Nr. 843 (falls noch nicht überschrieben) oder gehen Sie in die Zeile if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) { $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6); }und fügen Sie den folgenden Code unter dem Block ein:

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

Danach stimmen das Kennwort und das Bestätigungskennwort auf den Seiten "Kasse" und "Konto erstellen" überein.

Hoffe das könnte jemandem helfen.

HD
quelle
3

Ich habe eine Erweiterung, die die AccountController.php überschrieb und das gleiche Problem für Magento-Plattformen unter 1.9.1 hatte

Meine Lösung war;

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'));
}
BENN1TH
quelle
2

Für mich weder gearbeitet $this->getPasswordConfirmation()noch $this->getConfirmation(). Beide gaben eine leere Zeichenfolge zurück. Also habe ich direkt auf den POST-Parameter zugegriffen, in /app/code/core/Mage/Customer/Model/Customer.php(ja, besser eine Kopie verwenden in /app/code/local):

if (isset($_REQUEST['confirmation']))
    $confirmation = $_REQUEST['confirmation'];
else
    $confirmation = $this->getPasswordConfirmation();
Anse
quelle
1
ha ha guten Riss :)
Keyur Shah
0

Es liegt an dieser Änderung in 1.9.1 Update. Sie müssen Ihren Erweiterungscode aktualisieren. - Kundenpasswörter werden bei der Registrierung nicht mehr im Klartext gespeichert.

Javier
quelle
Ich werde die Durchwahlcodes überprüfen. Vielen Dank!
Bill
0

Ich habe das gleiche Problem wie beim Auschecken mit einer Drittanbietererweiterung, daher muss dieses Problem auftreten

Ich habe diesen Fehler behoben, indem ich die folgenden Schritte ausgeführt habe

1) In meinem Modul suche ich nach confirmation

2) Überprüfen Sie, ob die Daten für das customerModell eingestellt sind

3) Ändern Sie dann den Schlüssel in password_confirmationvonconfirmation

Ich folge den obigen Schritten, um das Problem zu debuggen und zu lösen.

Murtuza Zabuawala
quelle
0

Meine Lösung war

$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.');
        }
    }
RW-Fairport
quelle
-3

Hallo Freunde, dieses Problem kann folgendermaßen gelöst werden:

Schritt 1: Öffnen Sie diese Datei. /app/code/core/Mage/Customer/Model/Customer.php
Schritt 2: Suchen Sie diese Zeile in Customer.php $confirmation = $this->getPasswordConfirmation(); Schritt 3: Ersetzen Sie diese Zeile durch $confirmation = $this->getConfirmation();

Ihr Problem ist jetzt behoben.

Mag Kart
quelle
3
Wenn dies nicht wirklich ein Kernfehler ist, würde ich nicht empfehlen, Kerndateien zu ändern.
Andrew Kett