结帐时设置的密码问题
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的那一端(还以为写在最上面了。。。)
编辑
我知道了,解决方法在这里:
我对通过结帐注册的客户有疑问。
结帐过程后,客户登陆“我的帐户”,但一旦注销,他将无法再访问"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的那一端(还以为写在最上面了。。。)
编辑
我知道了,解决方法在这里: