Magento以手机号和密码登录简介

上一篇文章为Magento1.5新增会员注册字段讲到给Magneto注册时新增一个mobile字段,也就是手机号,这里讲下如何以注册时所填手机号和密码来登录系统,而不仅仅只能通过email登录。

因为需要拿手机号来登录,所以首先要明确一件事,就是这个手机号字段在系统中必须是唯一的,也就是说不能存在两个手机号一样的会员,所以首先注册时要验证所填的手机号是否已经被注册。打开文件app\code\core\Mage\Customer\controllers\AddressController.php,找到createPostAction,在改Action里新增验证代码,参考如下

$mobile = $this->getRequest()->getParam('mobile', false);
        $mobilestatus = Mage::getModel('customer/customer')->getCollection()
        ->addAttributeToFilter('mobile', $mobile)
        ->getFirstItem()
        ->load();
        if($mobilestatus->getData('mobile')){
               $session->addError('该手机号已被使用');
               $this->_redirect('*/*/create');
               return;
        }

然后就是在登录是要允许使用注册所填的手机号和密码来登录,其实原理很简单,因为email和手机号对于会员来说都是唯一的,所以一个手机号必然能找到对应会员的email,程序中实现的话就是以手机号去除email,然后继续按系统自由登录流程使用eamil和密码登录系统。同一个文件中,找到loginPostAction,新增代码参考如下

if (!empty($login['username']) && !empty($login['password'])) {
                try {
                                    //用手机号登录
                    $username = $login['username'];
                    if(!strstr($username,'@')){
                        $mobile = Mage::getModel('customer/customer')->getCollection()
                        ->addAttributeToFilter('mobile', $username)
                        ->getFirstItem()
                        ->load();
                        if($mobile->getData('email')){
                            $email =  $mobile->getData('email');
                            $login['username']  = $email;
                        }
                    }
                    $session->login($login['username'], $login['password']);	

至此,我们已经可以使用手机号和密码登录系统了,当然这只是第一步,后面还会涉及到问题就不细说了,有兴趣的自己去尝试和完善吧

时间: 2024-08-31 09:49:36

Magento以手机号和密码登录简介的相关文章

密码登录生成器

<HTML><!-- #BeginTemplate "/Templates/Js.dwt" --> <HEAD><!-- #BeginEditable "doctitle" --> <TITLE>密码登录生成器</TITLE><!-- #EndEditable --> <META http-equiv=Content-Type content="text/html;

利用脚本实现批量免密码登录主机

实验背景 在一个局域网,在其中指定一台主机做为管理机,其它主机做为被管理机,为以后维护的便利性,要求实现管理机无需密码,直接登录被管理机. 使用Vmware Workstation搭建一个模拟局域网 该局域网内有四台主机,通过虚拟交换机Vnet1,实现互连互通 四台主机都安装了CentOS6,并关闭了iptables和SELinux 指定CentOS1(192.168.10.2)为管理机 指定CentOS2(192.168.10.3~5)为被管理机 简单的网络拓朴如下图所示 实验目的 通过she

Ubuntu 11下SSH无法免密码登录的问题

研究Hadoop过程中有一步需要用到SSH免密码登录 创建密钥之类的网上有很多基本上就是如下两条 创建密钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 追加授权:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 紧跟着,顺利的话,输入ssh localhost就可以顺利的免密码登录了,但是,我的失败了,折腾了一下午,才搞定 尝试的方法主要有将.ssh的权限设置为700,将.ssh下的authorized_key

浅谈ssh的相互免密码登录

2台Linux机器之间的相互ssh免密码登录,假设A, B 2台电脑,都有用户user1. 在Host A上, 以用户user1执行命令 ssh-keygen 生成私钥id_rsa和公钥id_rsa.pub, 再执行命令 ssh-copy-id user1@HostB 将公钥拷贝到Host B上,并需要输入Host B上的user1密码,则Host A到Host B ssh 免密码登录 将Host A上的私钥scp到Host B上 scp ~/.ssh/id_rsa user1@HostB:~/

ORACLE用SYS和SYSTEM默认密码登录提示的问题

环境:Oracle 11g R2 +SQLPlus 问题:ORACLE用SYS和SYSTEM默认密码登录提示 ORA- 01017:invalidusername/password;logond denied 我们都知道,sys的默认密码是manager,system的 默认密码是change_on_install,为什么使用默认密码都无法正常登录呢?刚安装好后可以正常运行,久了没 用反而用不了了.就这奇怪了.不过可以使用下面的解决办法. 解决: Win +Run------- >Cmd----

带数据库的ASP用户名密码登录验证代码

  带数据库的ASP用户名密码登录验证代码,这个代码里有登录判断的完整逻辑,包括连接数据库,查询判断用户名和密码是否正确,返回重填,关闭数据库记录集等,对ASP初学者有相当好的借鉴价值: 这里连接的是SQLSERVER数据库,数据库就不上传了,里面有两个字段,name是存储用户名,userpassword是密码字段,自己手动创建个,修改本代码里面的数据库连接信息就可测试了.

请问如何利用Java实现自动下载文件:此文件需要输入用户名及密码登录后才能下载。

问题描述 如题,谢谢! 解决方案 解决方案二:不明白什么是自动下载.解决方案三:在你点击的同时判断范围内是否存在登陆用户的信息..有则下没有则提示解决方案四:做一个文件下载的servletservlet中设置response的类型例如:res.setContentType("application/octet-stream;charset=UTF-8");res.setHeader("Content-Disposition","attachment;fil

汇编语言-求密码登录及修改汇编程序

问题描述 求密码登录及修改汇编程序 求一个8086汇编的密码登录及密码修改的汇编程序.求大神.具体:先与原来缓冲区的密码比较,如果正确则登录成功,如果错误,则跳到修改密码页面,然后输入新密码,再确认新密码,如果正确,则修改成功,如果错误则重新输入新密码 解决方案 http://wenku.baidu.com/link?url=sHJqwulm3Uc6kIO6e0KIpAX6p_NyedmIe4khwGgAWXsBOFPpOH64th0vpYZvyLjQddj9o4wryeup-AGfNWkg5l

如何配置才能允许phpmyadmin空密码登录

之前本站也曾介绍过使用phpmyadmin修改Mysql的root密码的方法,但是当你将phpmyadmin登录密码设置为空密码时,尽管你通过Mysql命令行方式可以以空密码进入Mysql,但是当你重新以空密码登录phpmyadmin时却无法登陆,这是因为默认phpmyadmin空密码登录是被禁止的,如果想要phpmyadmin空密码允许登录,就需要修改phpmyadmin相关配置. 在phpmyadmin3安装配置图解教程一文中,我介绍了phpmyadmin的安装与配置,至于修改phpmyad