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']);	

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

你可能感兴趣的:(mobile,手机,email,redirect,login,Magento)