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‘)

修改方法 _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.许多自己添加的功能和用户手机号相关联的,这就需要自己修改了

无能为力了,自己考虑修改吧。

时间: 2024-08-30 05:59:57

Magento 使用手机号注册登录的相关文章

关于注册登录那点事儿

注册登录是好多产品都有的功能,虽然常规,但里面也是很有门道的,我们一起来聊聊~~ 注册登录的分类: 无需注册登录:通常没有账号体系,主要是工具类应用,比如计算器.手电筒等. 非强制登录:在登录前可以使用部分功能,这些功能不涉及到核心业务,比如购物类应用在登录前可以浏览商品.在线音乐.新闻类应用等. 强制登录:必须登录才能使用,主要是社交类应用,如qq.微信等,因为这种应用如果不登录,没有用户身份的话,核心功能就无法使用. 什么时候要求注册登录: 社交类应用:在打开app时就必须登录,若没有账号引

如何提高移动端注册登录体验

有多少用户愿意注册登录,决定了一款产品的活跃度.我们来谈一谈如何提高移动端的登录体验. 一.登录类型 用户通常有三种不同的方式来登录一个APP: 第三方授权登录的方式,优势是,省去用户注册这一流程,让用户可以在第三方授权下迅速登录.劣势是用户不是你的用户,是第三方的用户,流量可能只是暂时的,而且转化起来比较难.但我个人还是倾向于第三方授权登录的方式,因为第三方大多数都拥有海量的活跃用户,而且我们还可以在后期进行有针对性的转化—给用户一系列个性化设置.绑定手机号的操作流程. 最反感用第三方授权登录

js注册登录审核

<script type="text/javascript"> $(function(){ $("#sendSms").click(function(){ sendSms(); } ); // 手机和21cake地址切换 var $menu_li = $(".banner li"); $menu_li.click(function(){ $(this).addClass('link').siblings().removeClass(&

微信不用手机号注册

CreateTime--2017年12月26日10:01:55 Author:Marydon 不用手机号注册微信号 实现方法:注册必须使用手机号注册,但是使用该手机号注册后,可以解绑掉该手机号,最终效果如下: 1.注册: 信息填完后-->点击“注册”-->选择“同意”微信隐私保护指引-->后续更新 说明:要注册的手机号的手机卡必须再本手机上安装着,否则后面的网络及短信校验会失败的. 2.设置微信号: 注册成功后-->点击“我”-->点击“设置”-->“账号与安全”--&

8、ABPZero系列教程之拼多多卖家工具 添加手机注册登录功能

现在网站基本都用手机注册,很少用邮箱注册,本篇内容比较多,代码我会尽量加备注,有些操作需要连续添加几个文件才不报错,如果VS显示错误,请继续后续步骤. 前面已经有一篇文章讲到集成短信发送模块:http://www.cnblogs.com/shensigzs/category/1147235.html 在此基础上才能做手机注册功能,没有完成的同学请先去整合后再回来. 语言文件 AbpZeroTemplate-zh-CN.xml文件末尾添加如下键值对: 文件路径:D:\abp version\asp

巨蟒django之CRM1 需求分析&amp;&amp;表结构设计&amp;&amp;注册登录验证

1.需求分析 1.项目 (1)业务 (2)权限的管理 2.CRM customer relationship management 客户关系管理系统 3.谁来使用CRM? 销售&&班主任&&讲师&&助教 4.项目的需求分析 (1)注册 (2)登录 (3)销售 1.客户信息管理 增加 编辑 展示 客户信息(删除一般不用它做,后台管理员来做,为了信息安全) 2.跟进信息管理 增加 编辑 展示 跟进信息 3.报名信息的管理 增加 编辑 展示 报名信息 4.缴费记录

最新国内注册登录google方法,国内手机验证通过方法

众所周知目前在国内注册google账号是难上又难,之前是不能打开网页,现在是国内的手机号不能验证今天小呆就说说怎么在国内注册登录上google账号的,先说明,是帮别人注册成功了1.我们先在手机上面下载加速器软件,大家都知道的需要使用代理刺猬加速器网站:www.ciweijsq.com 电脑使用就下载电脑版2.软件下载成功之后,安装,打开软件,注册账号登录,这里要注意一点的就是,模式要选择全局3链接成功之后打开google网站,点击注册信息填写好之后点击下一步,填写手机号验证填写手机号收到的验证码

python-15-常用文件操作与注册登录练习

前言 1.常用的文件操作无非就是读或写,但python中没有提供文件修改的功能,是无法实现,但我们可以新增-删除源文件-更改新增文件为源文件名称. 2.使用文件的存储与读取方式来简单完成注册.登录功能,需求如下: 1.注册,设置的账号密码用文件存储: 2.登录,读取账号密码判断,错误三次机会并提醒: 一.新增-删除源文件-更改新增文件为源文件名称 1.文件内容如下,需要将“欣欣”修改为“小龙”. 2.运用os模块,删除源文件.更改新文件名称为源文件名称即可.(感觉就像修改文件一样) f = op

一个基于Unix套接字的注册登录系统

2016/5/5 今天,我参考<Unix网络编程-卷1>第5章的TCP回射客户/服务器程序写了一个简单的注册登录系统,其功能如下:(1)注册.客户端向服务器发送个人信息请求注册,服务器查询MySQL数据库以检查该客户是否已存在,若是则禁止注册,并返回“用户已存在,注册失败”的错误信息,否则将新用户信息添加到MySQL数据库,并返回“注册成功”的信息.(2)登录.客户端向服务器发送个人账号和密码等两项信息,服务器查询MySQL数据库以检查账号是否存在.账号和密码是否匹配,若不存在或不匹配则禁止登