790
技術社區[雲棲]
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']);
至此,我們已經可以使用手機號和密碼登錄係統了,當然這隻是第一步,後麵還會涉及到問題就不細說了,有興趣的自己去嚐試和完善吧
最後更新:2017-04-02 06:52:03