Magento1.9.1请确保您的密码匹配问题

时间:2014-12-05 07:51:25

标签: passwords magento-1.9.1

我在CE1.9.1中遇到了这个问题。

当用户注册(在结账时或从创建帐户链接时无关紧要)时,即使正确地重新输入密码,用户仍会收到密码不匹配错误。

表单验证不表示未匹配,但是一旦用户点击Register,它就会返回不匹配错误。

Chrome控制台中没有错误......

我发现了这个:https://magento.stackexchange.com/questions/37381/please-make-sure-your-passwords-match-password-error-in-checkout-with-new-re

但我不相信这是同样的错误。

我需要尽快解决,非常感谢任何帮助!

9 个答案:

答案 0 :(得分:5)

我们的网上商店也有这个问题。但是我们使用了结帐扩展程序。所以我不确定这是否适用于常规标准结账。反正。

问题应该是,你使用结账延期吗?

如果是这样,该扩展名的模型文件中的值设置为:

 $customer->setConfirmation($password);

但应该是:

$customer->setPasswordConfirmation($password);

对我来说这很有效,但没有改变核心内容。只是扩展应该得到一个小的更新,或者你可以像我一样手动完成。只需在扩展程序的模型映射文件中找到该行。

答案 1 :(得分:2)

作为解决方法,您可以使用以下代码:

$confirmation = $this->getConfirmation();
$passwordconfirmation = $this->getPasswordConfirmation();
//if ($password != $confirmation) {
if (!(($password == $confirmation) ||
    ($password == $passwordconfirmation))) {
    $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
}

答案 2 :(得分:1)

根据@Pedro的建议更改app / code / core / Mage / Customer / Model / Customer.php会破坏“忘记密码”和“编辑客户帐户”页面的功能。而是对

进行以下更改
app/code/core/Mage/Checkout/Model/Type/Onepage.php

编辑从369开始的行

if ($quote->getCheckoutMethod() == self::METHOD_REGISTER) {
  // set customer password
  $customer->setPassword($customerRequest->getParam('customer_password'));
  $customer->setConfirmation($customerRequest->getParam('confirm_password'));
} else {
  // emulate customer password for quest
  $password = $customer->generatePassword();
  $customer->setPassword($password);
  $customer->setConfirmation($password);
}

并设置PasswordConfirmation -Property而不是Customer-Object的Confirmation-Property:

if ($quote->getCheckoutMethod() == self::METHOD_REGISTER) {
  // set customer password
  $customer->setPassword($customerRequest->getParam('customer_password'));
  $customer->setPasswordConfirmation($customerRequest->getParam('confirm_password'));
} else {
  // emulate customer password for quest
  $password = $customer->generatePassword();
  $customer->setPassword($password);
  $customer->setPasswordConfirmation($password);
}

答案 3 :(得分:1)

遇到同样的问题并修复了它。 Snel的答案更贴近正确答案。问题可能在于外部/本地模块,因此您应该检查

app/code/core/Mage/Checkout/Model/Type/Onepage.php

当然不要在任何情况下修改它! 但是你应该找到在你的情况下使用的_validateCustomerData()方法。使用Mage :: log()或debug_backtrace()。它可能看起来像(但不完全是因为这部分可能因某种原因而被修改):

if ($quote->getCheckoutMethod() == self::METHOD_REGISTER) {
  // set customer password
  $customer->setPassword($customerRequest->getParam('customer_password'));
  $customer->setConfirmation($customerRequest->getParam('confirm_password'));
} else {
  // emulate customer password for quest
  $password = $customer->generatePassword();
  $customer->setPassword($password);
  $customer->setConfirmation($password);
}

这些模块扩展了旧版本的核心文件,因此如果您的模块未更新,您应该自行更改并更改

setConfirmation()

到目前可用的模拟:

setPasswordConfirmation()

答案 4 :(得分:0)

我也有同样的问题。我对代码感到不舒服,所以我想避免上述所有问题。为了解决这个问题,我所做的只是更新我的扩展,我还禁用了一个页面检出,清除了缓存,然后重新启用了一页结帐。

现在已经解决了这个问题而无需修改代码。

希望它对你有所帮助。

答案 5 :(得分:0)

除非这确实是一个核心错误,否则我不建议更改核心文件。但我这样解决了打开app \ code \ core \ Mage \ Customer \ Model \ Customer.php并编辑下面的代码< / p>

$confirmation = $this->getConfirmation();
$passwordconfirmation = $this->getPasswordConfirmation();
//if ($password != $confirmation) {
if (!(($password == $confirmation) ||
    ($password == $passwordconfirmation))) {
    $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
}

答案 6 :(得分:0)

如果有人仍然无法弄清楚,为什么会发生这种情况: Conlabz Useroptin扩展(http://www.magentocommerce.com/magento-connect/newsletter-double-opt-in-for-customers.html)也可能导致此行为。

答案 7 :(得分:0)

我在更新到1.9.2.1之后遇到了同样的问题,并且无法使用此处和其他地方的一些建议的代码更改来解决 - 出于显而易见的原因,也非常不愿意更改核心代码。

我的解决方案 - 配置更新。那是:

  • 启用OnePage Checkout =是
  • 允许访客结帐=是
  • 要求客户登录=否

根据上述内容我更新为是/否/是并清除了缓存。这通过插入标准客户注册表单(而不是将注册附加到结算信息的末尾)并在成功注册时将该信息传递到结算表单来解决问题。

似乎这里有一个代码问题,但是这对我来说是一个很好的解决方法。希望能帮助到你。

Checkout Configuration Settings

答案 8 :(得分:-1)

更改此代码

app\code\core\Mage\Customer\Model\Customer.php
$confirmation = $this->getPasswordConfirmation();

到此代码

$confirmation = $this->getConfirmation();