结帐时设置的密码问题

password set during checkout issue

我对通过结帐注册的客户有疑问。

结帐过程后,客户登陆“我的帐户”,但一旦注销,他将无法再访问"My Account",显示消息"Invalid login or password"。

通过“忘记密码”按钮设置新密码似乎可以解决客户的问题。 (不过如果密码能不经过这一步直接生效就好了。)

我认为(但完全不确定)通过 billing.phtml 设置的密码存储不正确。

通过"Register"按钮注册的客户已正确保存,没有遇到任何问题。

我在 template/persistent/Customer/form/register.phtml:

            <li class="fields">
                <div class="field">
                    <label for="password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
                    <div class="input-box">
                        <input type="password" name="password" id="password" title="<?php echo $this->quoteEscape($this->__('Password')) ?>" class="input-text required-entry validate-password" />
                    </div>
                </div>
                <div class="field">
                    <label for="confirmation" class="required"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
                    <div class="input-box">
                        <input type="password" name="confirmation" title="<?php echo $this->quoteEscape($this->__('Confirm Password')) ?>" id="confirmation" class="input-text required-entry validate-cpassword" />
                    </div>
                </div>
            </li>

在 template/Customer/form/resetforgottenpassword.phtml:

        <li class="fields">
            <div class="field">
                <label for="password" class="required"><em>*</em><?php echo $this->__('New Password'); ?></label>
                <div class="input-box">
                    <input type="password" class="input-text required-entry validate-password" name="password" id="password" />
                </div>
            </div>
            <div class="field">
                <label for="confirmation" class="required"><em>*</em><?php echo $this->__('Confirm New Password'); ?></label>
                <div class="input-box">
                    <input type="password" class="input-text required-entry validate-cpassword" name="confirmation" id="confirmation" />
                </div>
            </div>
        </li>

在 template/persistent/checkout/onepage/billing.phtml 中,我认为是罪魁祸首:

            <li class="fields" id="register-customer-password">
                <div class="field">
                    <label for="billing:customer_password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
                    <div class="input-box">
                        <input type="password" name="billing[customer_password]" id="billing:customer_password" title="<?php echo $this->quoteEscape($this->__('Password')) ?>" class="input-text required-entry validate-password" />
                    </div>
                </div>
                <div class="field">
                    <label for="billing:confirm_password" class="required"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
                    <div class="input-box">
                        <input type="password" name="billing[confirm_password]" title="<?php echo $this->quoteEscape($this->__('Confirm Password')) ?>" id="billing:confirm_password" class="input-text required-entry validate-cpassword" />
                    </div>
                </div>
            </li>

我尝试了对billing.phtml的几种修改,例如:

<label for="password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
<input type="password" name="password" id="password" title="<?php echo $this->quoteEscape($this->__('Password')) ?>" class="input-text required-entry validate-password" />
<input type="password" name="password" title="<?php echo $this->quoteEscape($this->__('Confirm Password')) ?>" id="confirmation" class="input-text required-entry validate-cpassword" />

但我仍然导致相同的结果。 我在用 SUPEE 9652 打补丁的 CE 1.9.3.1.

如何正确保存客户在结账时注册的信息?

关于 lib/Varien/Crypt/Mcrypt.php

我有 4 个错误
Warning: mcrypt_generic_init(): Key size is 0 in /lib/Varien/Crypt/Mcrypt.php on line 94
Warning: mcrypt_generic_init(): Key length incorrect  in /lib/Varien/Crypt/Mcrypt.php on line 94
Warning: mcrypt_generic_deinit(): 495 is not a valid MCrypt resource  in /lib/Varien/Crypt/Mcrypt.php on line 135
Warning: mcrypt_module_close(): 495 is not a valid MCrypt resource  in /lib/Varien/Crypt/Mcrypt.php on line 136

我认为这与我的服务器 (https://magento.stackexchange.com/a/35888) 上的 PHP Mcrypt 中缺少一个模块有关。但事实并非如此,因为通过在同一 Magento 安装的根目录中的文件夹中安装新的 CE 1.9.3.1 可以使用相同的服务器配置和 Mcrypt.php 正确地完成其工作。此外,在表单注册期间设置的密码(?并使用相同的加密?)设置正确。

我会打开一个新的 post 更精确。

@urfusion,谢谢指教,我是看错了system.log的那一端(还以为写在最上面了。。。)

编辑

我知道了,解决方法在这里: