【问题标题】:password set during checkout issue结帐时设置的密码问题
【发布时间】:2017-07-15 08:37:17
【问题描述】:

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

结账后,客户登陆“我的账户”,但一旦注销,他就无法再访问“我的账户”,并显示“无效的登录名或密码”消息。

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

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

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

我在 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>

在模板/客户/表单/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。

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

【问题讨论】:

  • 这个问题是表述不当还是缺少信息?还有其他人面临这个问题吗?
  • 检查您的日志并检查电子邮件验证。
  • 感谢您的建议。 system.log 或 exception.log 中不显示任何内容。关于电子邮件验证,您能具体说明一下吗?由于相同的模板用于客户新帐户确认。一次显示密码(客户通过注册设置),一次无显示(客户通过结帐注册)。

标签: magento passwords account


【解决方案1】:

我有 4 个关于 lib/Varien/Crypt/Mcrypt.php 的错误

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

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

我将打开一个更精确的新帖子。

@urfusion,谢谢你的建议,我在看 system.log 的错误结尾(以为写在最上面...)

编辑

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

https://stackoverflow.com/a/42474835/7553582

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 2016-08-31
    • 2012-06-07
    • 1970-01-01
    • 2023-03-25
    • 2014-08-30
    • 2017-12-29
    • 1970-01-01
    相关资源
    最近更新 更多