Magento升级到1.9之后,重置密码不成功,总是提示密码不匹配的解决方法

时间:2018-05-27 00:37人气:0

问题

Magento 从低版本升级到1.9最新版之后,前台用户点击 忘记密码,能正常收到重置密码的邮件,然后点击邮件里的重置密码链接返回到网站里去填写新密码,但是填写完新密码提交后,还是停留在重置密码的页面,也没有任何错误或成功的提示,也没有自动跳转到登录页面上,就算你手动点击到登录页面,页面上也会提示说密码不匹配,这相当于就是前面的密码重置不成功。


原因

Magento程序是升级到新版本了,但是使用的模板主题是定制的,不是使用默认的模板,还是之前旧的,并没有随着升级,这样就导致里面的重置密码的方法有些有不一样了。


解决方法

  1. 修改定制模板主题里的对应的方法,但是这个工作量比较大,比较麻烦,不建议采用

  2. 修改程序里的核心代码来做个兼容性判断,方法如下:

    A、复制这个文件 /app/code/core/Mage/Customer/Model/Customer.php 到/app/code/local/Mage/Customer/Model/Customer.php(这样以后升级就不会被覆盖了)

    B、把函数 public function validateResetPassword() 下的 $confirmation = $this->getConfirmation() 或 $confirmation = $this->getPasswordConfirmation(); 替换为

  3. if (isset($_REQUEST['confirmation']))
    		$confirmation = $_REQUEST['confirmation'];
    		else
    		$confirmation = $this->getPasswordConfirmation();
  4. 或者是做版本判断
    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'));
    }

代码截图如下

11111.png