藉助小程式雲開發實現小程式的登陸註冊功能

程式設計小石頭發表於2018-10-11

有了雲開發我們不僅可以方便的獲取到使用者的openid,還可以通過雲開發的資料庫來儲存使用者資訊,進而實現小程式使用者的登陸與註冊功能。

本節知識點

  • 1,雲開發的使用
  • 2,雲函式的使用
  • 3,雲資料庫的使用
  • 4,使用者登陸
  • 5,使用者註冊

涉及到三個頁面

  • 1,登陸頁面
    登陸頁面
  • 2,註冊頁面
    註冊頁面
  • 3,登陸成功
    登陸成功

下面來看具體的程式碼實現

一,註冊頁面實現

  • 1,register.wxml
<!--pages/register/register.wxml-->
<input class='input' placeholder='請輸入使用者名稱' bindinput='inputName'></input>
<input class='input' placeholder='請輸入密碼' bindinput='inputPassword'></input>
<input class='input' placeholder='請輸入電話' bindinput='inputPhone'></input>
<input class='input' placeholder='請輸入地址' bindinput='inputAddress'></input>
<button class='button' type='primary' bindtap='register'>註冊</button>
複製程式碼
  • 2,register.js 需要注意的是我們註冊時需要使用到雲開發資料庫,在使用雲開發資料庫之前還需要初始化雲開發,程式碼裡都有註釋
// pages/register/register.js
let app = getApp();
// 獲取資料庫引用
const db = wx.cloud.database();
const userListDB = db.collection('userlist');

let name = null;
let password = null;
let phone = null;
let address = null;
Page({
 /**
  * 頁面的初始資料
  */
 data: {

 },
 //輸入使用者名稱
 inputName(evnet) {
  name = evnet.detail.value;
 },
 //輸入密碼
 inputPassword(evnet) {
  password = evnet.detail.value;
 },
 //輸入手機號
 inputPhone(evnet) {
  phone = evnet.detail.value;
 },
 //輸入地址
 inputAddress(evnet) {
  address = evnet.detail.value;
 },
 //註冊
 register() {
  let that = this;
  if (!app.checkNamePassword(name, password)) {
   return;
  }
  if (!app.checkPhoneAddress(phone, address)) {
   return;
  }
  //查詢使用者是否已經註冊
  userListDB.where({
   _openid: app.globalData.openid // 填入當前使用者 openid
  }).get({
   success: function(res) {
    let userInfos = res.data;
    console.log(res.data)
    if (userInfos && userInfos.length > 0) {
     let user = userInfos[0];
     if (user && user.name) {
      wx.showModal({
       title: '提示',
       content: '您已註冊,確定要更新賬號密碼嗎?',
       success: function(res) {
        if (res.confirm) {
         console.log('使用者點選確定')
         that.saveuserinfo();
        }
       }
      })
     }
    } else {
     that.saveuserinfo();
    }
   }
  })
 },
 saveuserinfo() {
  let that = this;
  userListDB.doc('_openid').set({
   data: {
    name: name,
    password: password,
    phone: phone,
    address: address
   }
  }).then(res => {
   app.showTips('註冊成功');
  })
 },
})
複製程式碼
  • 3,在app.js裡初始化雲開發 下面的prod-8aa9a5就是我們雲開發的環境id
//app.js
App({
 onLaunch: function() {
  //雲開發初始化
  wx.cloud.init({
    env: 'prod-8aa9a5',
    traceUser: true
   })
 }
})
複製程式碼

雲開發id

  • 4,註冊成功後,我們在雲開發控制檯的資料庫裡就可以看到註冊資訊了。
    資料庫

二,註冊成功後,就要實現登陸功能了

我們這裡的登陸功能需要用到第一步註冊時的使用者名稱和密碼,也就是上圖資料庫裡的name和password欄位

  • 1,登陸頁面實現程式碼 login.wxml
<!--pages/login/login.wxml-->
<input class='input' placeholder='請輸入使用者名稱' bindinput='inputName'></input>
<input class='input' placeholder='請輸入密碼' bindinput='inputPassword'></input>
<button class='button' type='primary' bindtap='login'>登陸</button>
<button class='button' type='primary' bindtap='register'>去註冊</button>
複製程式碼
  • 2,登陸功能實現
// pages/login/login.js
let app = getApp();
// 獲取資料庫引用
const db = wx.cloud.database();
const userListDB = db.collection('userlist');

let name = null;
let password = null;
Page({

 data: {
 },

 //輸入使用者名稱
 inputName(evnet) {
  console.log(evnet.detail.value)
  name = evnet.detail.value;
 },
 //輸入密碼
 inputPassword(evnet) {
  password = evnet.detail.value;
 },
 //登陸
 login() {
  let that = this;
  if (!app.checkNamePassword(name, password)) {
   return;
  }
  //登陸獲取使用者資訊
  userListDB.where({
   _openid: app.globalData.openid
  }).get({
   success: function(res) {
    let userInfos = res.data;
    console.log(res.data)
    if (userInfos && userInfos.length > 0) {
     let user = userInfos[0];
     if (user.name !== name) {
      app.showTips('使用者名稱不匹配');
     } else if (user.password !== password) {
      app.showTips('密碼不匹配');
     } else {
      app.showTips('登陸成功');
      let jsonStr=JSON.stringify(user);
      wx.navigateTo({
       url: '../index/index?jsonStr=' + jsonStr,
      })
     }
    } else {
     app.showTips('使用者不存在');
    }
   }
  })
 },
 register() {
  wx.navigateTo({
   url: '../register/register',
  })
 },
})
複製程式碼
  • 3,登陸成功後顯示使用者資訊 電話號碼是胡亂填的,想聯絡我可以__加我微信2501902696__
    登陸成功

這樣就可以實現小程式的登陸與註冊了。

想要完整原始碼或者有小程式相關的問題,可以加我微信2501902696(備註小程式)

10天零基礎入門小程式系列線上視訊教程

相關文章