Magento 使用手機號註冊登入

來源:互聯網
上載者:User

標籤:magento

Magento 預設使用郵箱註冊登入,國內目前許多使用者並沒有使用郵箱的習慣,所以需要使用手機號來實現註冊。
使用手機號註冊,需要關聯的地方比較多而雜,這裡只說個大概以及思路。
手機註冊涉及到的修改包括:
1.添加手機號欄位
2.註冊流程
3.登入流程
4.忘記密碼,通過手機號重設密碼
5.後台使用者表(grid表)顯示手機號資訊
6.未登入使用者在結賬頁面的註冊和登入流程
7.使用者資訊修改頁面
8.許多自己添加的功能和使用者手機號相關聯的,這就需要自己修改了

1.添加手機號欄位
可以自行搜尋為使用者添加一個新的屬性的方法,也可以安裝系統管理使用者屬性的外掛程式,後台直接添加,這裡就不多說了。

2.註冊流程
註冊頁面可以添加個 tab 切換使用郵箱註冊還是使用手機號註冊,也可以新添加一個連結跳轉到的是使用手機號註冊。這裡使用後者舉例:
預設註冊頁面的 handle 是
customer_account_create 在 customer.xml 中定義了它的layout等
我們可以根據它修改自己的handle例如是
customer_account_createmobile
重寫Customer的controller 並建立action

    public function createmobileAction()    {        if ($this->_getSession()->isLoggedIn()) {            $this->_redirect(‘*/*‘);            return;        }        $this->loadLayout();        $this->_initLayoutMessages(‘customer/session‘);        $this->renderLayout();    }

建立自己的 register_mobile.phtml
注意這裡的 form action 可以寫一個新的 action url
在這個 phtml 中重要的地方就是 傳送簡訊 按鈕設定 onclick事件。
使用 ajax 實現傳送簡訊,記錄session等操作。(注意設定傳送簡訊按鈕,點擊的時間間隔)
發送ajax請求,系統產生隨機的驗證碼存入session, 我這裡同時存入了手機號
還有一點,就是magento郵箱欄位不可為空白(否則修改的太多,沒嘗試過 - -!),所以這裡還需要隱藏一個input用來存放假的 email (系統自動產生)
又來一點:
注意檢測手機號是否已經註冊過了。

$session = $this->_getSession();// 我是寫在了customer的 accountController類中// 擷取session你也可以寫為// $session = Mage::getSingleton(‘customer/session‘);$session->setMobile($mobile);$session->setMobileCode($mobile_code);

存入手機號,是為了使用者點擊註冊按鈕時,檢測提交的手機號是否還是用來擷取驗證碼那個手機號,防止使用者篡改手機號。
注意存入session等操作應等到調用 簡訊介面返回 成功時候執行。
這個時候使用者註冊例如post資料到 createmobilePostAction()
我們就可以在這裡做資料有效性檢驗,包括手機號格式,手機號是否被修改,驗證碼是否正確等操作。都正確 儲存手機號即可。

3.登入流程
前端直接去掉對於輸入的是否是郵箱的檢驗,修改 placeholder屬性提示手機號也可以即可。
資料post到 方法 loginPostAction()
這裡大致核心代碼為:

 $userName = trim($login[‘username‘]); if(!strstr($userName,‘@‘) && strlen($userName) == 11){ // 不是郵箱 長度為11 則為手機號 粗略的檢測,可自行修改 $mobileNu = Mage::getModel(‘customer/customer‘)->getCollection()            ->addAttributeToFilter(‘mobile‘, $userName)            ->getFirstItem(); if($mobileNu->getData(‘email‘)){    $login[‘username‘] = $mobileNu->getData(‘email‘);  } }

思路其實就是根據手機號先找到郵箱,再使用郵箱登陸。

4.忘記密碼,通過手機號重設密碼
忘記密碼頁面也是可以讓使用者選擇是通過郵箱重設密碼或者 通過手機號重設密碼。
通過手機號重設密碼流程是:
輸入手機號 -> 擷取驗證碼 -> 輸入驗證碼提交資料 -> 判斷驗證碼是否正確,是否存在使用這個手機號註冊的使用者 -> 一切正常,自動跳轉到重設密碼頁面 -> 重設密碼 -> 結束

重設密碼前端頁面需要注意的地方可以參考註冊流程前端頁面,根據需要修改即可。 例如post 資料到 forgotPasswordMobilePostAction()
在這個方法中,需要檢測資料有效性等,一切正常產生token,然後跳轉即可
核心代碼:

if ($customerId) {    try {        $newResetPasswordLinkToken = Mage::helper(‘customer‘)->generateResetPasswordLinkToken();        $customer->changeResetPasswordLinkToken($newResetPasswordLinkToken);        $url = Mage::getUrl(‘‘).‘customer/account/resetpassword?id=‘.$customerId.‘&token=‘.$newResetPasswordLinkToken;        Mage::app()->getFrontController()->getResponse()->setRedirect($url);        return;    } catch (Exception $exception) {        Mage::log(‘catch‘);        $this->_getSession()->addError($exception->getMessage());        $this->_redirect(‘*/*/forgotpassword‘);        return;    }}

5.後台使用者表(grid表)顯示手機號資訊
為後台顯示使用者資訊的表添加手機號顯示欄位
重寫Mage\Adminhtml\Block\Customer\Grid.php
修改方法 _prepareCollection()
在 $collection後面添加

->addAttributeToSelect(‘mobile‘)

修改方法 _prepareColumns()
在合適位置添加代碼:

$this->addColumn(‘mobile‘, array(            ‘header‘    => Mage::helper(‘customer‘)->__(‘手機號‘),            ‘index‘     => ‘mobile‘,            ‘width‘     => ‘10‘        ));

6.未登入使用者在結賬頁面的註冊和登入流程
修改 template\persistent\customer\form\login.phtml即可
參考使用者登入頁面前端修改。

7.使用者資訊修改頁面
修改 template\customer\form\edit.phtml
為使用者添加修改手機號的輸入框即可,也需要擷取簡訊驗證碼。
在controller 中修改editPostAction() 方法即可
注意檢測手機號是否已經註冊過了。

8.許多自己添加的功能和使用者手機號相關聯的,這就需要自己修改了
無能為力了,自己考慮修改吧。

Magento 使用手機號註冊登入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.