閱讀790 返回首頁    go 技術社區[雲棲]


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

  上一篇:go JAVA編程思想第四版—第三章—習題與答案
  下一篇:go Socket PrintWriter 中 write() 與 print() 的區別