上一篇文章为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-11-08 20:53:34