服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > magento教程 >

Magento使用手机号注册登录开发过程

时间:2015-06-05 10:06来源:未知 作者:最模板 点击:
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 (系统自动生成) 
又来一点: 
注意检测手机号是否已经注册过了。
 
$session = $this->_getSession();
// 我是写在了customer的 accountController类中
// 获取session你也可以写为
// $session = Mage::getSingleton('customer/session');
$session->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);
        $url = Mage::getUrl('').'customer/account/resetpassword?id='.$customerId.'&token='.$newResetPasswordLinkToken;
        Mage::app()->getFrontController()->getResponse()->setRedirect($url);
        return;
    } catch (Exception $exception) {
        Mage::log('catch');
        $this->_getSession()->addError($exception->getMessage());
        $this->_redirect('*/*/forgotpassword');
        return;
    }
}
 
5.后台用户表(grid表)显示手机号信息 
为后台显示用户信息的表添加手机号显示字段 
重写Mage\Adminhtml\Block\Customer\Grid.php 
修改方法 _prepareCollection() 
在 $collection后面添加
 
->addAttributeToSelect('mobile')
1
修改方法 _prepareColumns() 
在合适位置添加代码:
 
$this->addColumn('mobile', array(
            'header'    => Mage::helper('customer')->__('手机号'),
            'index'     => 'mobile',
            'width'     => '10'
        ));
 
6.未登录用户在结账页面的注册和登录流程 
修改 template\persistent\customer\form\login.phtml即可 
参考用户登录页面前端修改。
 
7.用户信息修改页面 
修改 template\customer\form\edit.phtml 
为用户添加修改手机号的输入框即可,也需要获取短信验证码。 
在controller 中修改editPostAction() 方法即可 
注意检测手机号是否已经注册过了。
 
8.许多自己添加的功能和用户手机号相关联的,这就需要自己修改了 
无能为力了,自己考虑修改吧。
(责任编辑:最模板)
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------