【发布时间】: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 中不显示任何内容。关于电子邮件验证,您能具体说明一下吗?由于相同的模板用于客户新帐户确认。一次显示密码(客户通过注册设置),一次无显示(客户通过结帐注册)。