Magento 使用手机号注册登录

Magento 默认使用邮箱注册登录,国内目前许多用户并没有使用邮箱的习惯,所以需要使用手机号来实现注册。 使用手机号注册,需要关联的地方比较多而杂,,这里只说个大概以及思路。 手机注册涉及到的修改包括: 1.添加手机号字段 2.注册流程 3.登录流程 4.忘记密码,通过手机号重置密码 5.后台用户表(grid表)显示手机号信息 6.未登录用户在结账页面的注册和登录流程 7.用户信息修改页面 8.许多自己添加的功能和用户手机号相关联的,这就需要自己修改了

1.添加手机号字段 可以自行搜索为用户添加一个新的属性的方法,也可以安装管理用户属性的插件,后台直接添加,这里就不多说了。

2.注册流程 注册页面可以添加个 tab 切换使用邮箱注册还是使用手机号注册,也可以新添加一个链接跳转到的是使用手机号注册。这里使用后者举例: 默认注册页面的 handle 是 customer_account_create 在 customer.xml 中定义了它的layout等 我们可以根据它修改自己的handle例如是 customer_account_createmobile 重写Customer的controller 并创建action

public function createmobileAction(){if ($this->_getSession()->isLoggedIn()) {$this->_redirect(‘*/*’);return;}$this->loadLayout();$this->_initLayoutMessages(‘customer/session’);$this->renderLayout();}

新建自己的 register_mobile.phtml 注意这里的 form action 可以写一个新的 action url 在这个 phtml 中重要的地方就是 发送短信 按钮设置 onclick事件。 使用 ajax 实现发送短信,记录session等操作。(注意设置发送短信按钮,点击的时间间隔) 发送ajax请求,系统生成随机的验证码存入session, 我这里同时存入了手机号 还有一点,就是magento邮箱字段不可为空(否则修改的太多,没尝试过 – -!),所以这里还需要隐藏一个input用来存放假的 email (系统自动生成) 又来一点: 注意检测手机号是否已经注册过了。

_getSession();setMobile($mobile);$session->setMobileCode($mobile_code);

存入手机号,是为了用户点击注册按钮时,检测提交的手机号是否还是用来获取验证码那个手机号,防止用户篡改手机号。 注意存入session等操作应等到调用 短信接口返回 成功时候执行。 这个时候用户注册例如post数据到 createmobilePostAction() 我们就可以在这里做数据有效性检验,包括手机号格式,手机号是否被修改,验证码是否正确等操作。都正确 保存手机号即可。

3.登录流程 前端直接去掉对于输入的是否是邮箱的检验,修改 placeholder属性提示手机号也可以即可。 数据post到 方法 loginPostAction() 这里大致核心代码为:

$userName = trim($login[‘username’]); if(!strstr($userName,’@’) && strlen($userName) == 11){ // 不是邮箱 长度为11 则为手机号 粗略的检测,可自行修改 $mobileNu = Mage::getModel(‘customer/customer’)->getCollection()->addAttributeToFilter(‘mobile’, $userName)->getFirstItem(); if($mobileNu->getData(’email’)){$login[‘username’] = $mobileNu->getData(’email’); } }

思路其实就是根据手机号先找到邮箱,再使用邮箱登陆。

4.忘记密码,通过手机号重置密码 忘记密码页面也是可以让用户选择是通过邮箱重置密码或者 通过手机号重置密码。 通过手机号重置密码流程是: 输入手机号 -> 获取验证码 -> 输入验证码提交数据 -> 判断验证码是否正确,是否存在使用这个手机号注册的用户 -> 一切正常,自动跳转到重置密码页面 -> 重置密码 -> 结束

重置密码前端页面需要注意的地方可以参考注册流程前端页面,根据需要修改即可。 例如post 数据到 forgotPasswordMobilePostAction() 在这个方法中,需要检测数据有效性等,一切正常生成token,然后跳转即可 核心代码:

if ($customerId) {try {$newResetPasswordLinkToken = Mage::helper(‘customer’)->generateResetPasswordLinkToken();$customer->changeResetPasswordLinkToken($newResetPasswordLinkToken);;Mage::app()->getFrontController()->getResponse()->setRedirect($url);return;} catch (Exception $exception) {Mage::log(‘catch’);getMessage());$this->_redirect(‘*/*/forgotpassword’);return;}}

5.后台用户表(grid表)显示手机号信息 为后台显示用户信息的表添加手机号显示字段 重写Mage\Adminhtml\Block\Customer\Grid.php 修改方法 _prepareCollection() 在 $collection后面添加

->addAttributeToSelect(‘mobile’)

修改方法 _prepareColumns() 在合适位置添加代码:

$this->addColumn(‘mobile’, array(::helper(‘customer’)->__(‘手机号’),,));

6.未登录用户在结账页面的注册和登录流程 修改 template\persistent\customer\form\login.phtml即可 参考用户登录页面前端修改。

愚者用肉体监视心灵,智者用心灵监视肉体

Magento 使用手机号注册登录

相关文章:

你感兴趣的文章:

标签云: