普通登录注册以及用户授权登陆

普通登陆注册

概述

此功能的实现简单的借助了微信小程序的云开发,具体在哪里使用,我会标出来。对于用户名、账号、密码都做了简单的校验。主要练手功能的实现,样式只做了简单的编写。

用户页面展示登陆注册两个按钮,没有账户可以选择注册,注册成功后跳转到展示登陆注册的用户页面。登陆成功后,用户界面展示用户名。

实现注册功能

效果展示

用户名长度至少两位且小于十位,用户账号至少四位,用户密码至少四位。成功注册后,跳转回用户登陆注册页面。

代码与注释

输入用户名
<input class="input" bindinput="getName"></input>
输入用户账号
<input class="input" bindinput="getZhangHao"></input>
输入用户密码
<input class="input" bindinput="getMiMa"></input>
<button bindtap="zhuce" type="primary">注册</button>
.input{
border: 1px solid gainsboro;
margin: 15rpx;
}
Page({

  /**
* 页面的初始数据
*/
data: {
name:'',
zhanghao:'',
mima:''
},
//获取用户名
getName(e){
this.setData({
name:e.detail.value
})
},
//获取用户账号
getZhangHao(e){
this.setData({
zhanghao:e.detail.value
})
},
//获取用户密码
getMiMa(e){
this.setData({
mima:e.detail.value
})
},
//注册
zhuce(){
let name=this.data.name
let zhanghao=this.data.zhanghao
let mima=this.data.mima
console.log('name',name)
console.log('zhanghao',zhanghao)
console.log('mima',mima)
/* 校验用户名 */
if(name.length<2){
wx.showToast({
icon:'none',
title: '用户名至少2位',
})
return
}
if(name.length>10){
wx.showToast({
icon:'none',
title: '用户名最多10位',
})
return
}
// 校验账号
if(zhanghao.length<4){
wx.showToast({
icon:'none',
title: '用户账号至少4位',
})
return
}
//校验密码
if(mima.length<4){
wx.showToast({
icon:'none',
title: '用户密码至少4位',
})
return
}
//注册功能实现
//使用微信官方云开发提供的 wx.cloud.database().collection('user').add({}),在数据库中的user表中添加新的用户名、账号、密码。
wx.cloud.database().collection('user').add({
data:{
name:name,
zhanghao:zhanghao,
mima:mima
},
success(res){
wx.showToast({
title: '注册成功',
})
wx.navigateTo({
url: '../user/user',//跳转到用户登陆注册界面
})
},
fail(res){
console.log('fail',res)
}
}) }
})

云开发 数据库中添加新的表

实现登录功能

效果展示

代码

<!--pages/login/login.wxml-->
输入账号
<input class="input" bindinput="getZhangHao"></input>
输入密码
<input class="input" bindinput="getMiMa"></input>
<button type="primary" bindtap="login">登陆</button>
.input{
border: 1px solid gainsboro;
margin: 15rpx;
}
// pages/login/login.js
Page({ /**
* 页面的初始数据
*/
data: {
zhanghao:'',
mima:''
},
// 获取账号
getZhangHao(e){
this.setData({
zhanghao:e.detail.value
})
},
// 获取密码
getMiMa(e){
this.setData({
mima:e.detail.value
})
},
// 登陆功能
login(){
let zhanghao=this.data.zhanghao
let mima=this.data.mima
// console.log('账号',zhanghao,'密码',mima)
//账号校验
if(zhanghao.length<4){
wx.showToast({
icon:'none',
title: '账号至少4位',
})
return
}
//密码校验
if(mima.length<4){
wx.showToast({
icon:'none',
title: '密码至少4位',
})
return
}
//借助小程序云开发提供的 wx.cloud.database().collection('user').where({})
//指定查询与输入账号相等账号,返回带新查询账号的新的集合引用
//.get({})获取根据查询条件筛选后的集合数据。
//如果输入密码与集合密码相同则登陆成功,则传用户名参数并跳转到用户界面,用户界面显示用户名
wx.cloud.database().collection('user').where({
zhanghao:zhanghao
}).get({
success(res){
let user=res.data[0]
console.log(user.name)
if(mima==user.mima){
wx.showToast({
title: '登陆成功',
}) wx.navigateTo({
url: '../user/user?name=' + user.name,
})
//保护用户登陆状态,将用户信息存储到Storage
wx.setStorageSync('user', user)
}else{
wx.showToast({
icon:'none',
title: '账号或密码不正确',
})
}
},
fail(res){
console.log("fail",res)
}
})
}
})

可在

中看到。

实现退出功能以及用户界面

效果展示

未登录

已登录

退出登录返回到未登录界面

代码

<!--pages/user/user.wxml-->
<!-- 未登录 -->
<view wx:if="{{!loginOK}}">
<button type="primary" class="zhuce" bindtap="denglu">登陆</button>
<button class="zhuce" bindtap="zhuce">注册</button>
</view>
<!-- 已登陆 -->
<view wx:else class="login-ok">
<text>{{name}}</text>
<button bindtap="tuichu">退出登录</button>
</view>
/* pages/user/user.wxss */
.zhuce{
margin-top: 50rpx;
}
.login-ok{
text-align: center;
}
// pages/user/user.js
Page({ /**
* 页面的初始数据
*/
data: {
loginOK:false,
name:''
},
// 去登陆页
denglu(){
wx.navigateTo({
url: '../login/login',
})
},
// 去注册页
zhuce(){
wx.navigateTo({
url: '../index/index',
})
},
//展示获取到的用户名
onShow(){
let user=wx.getStorageSync('user')
//storage中存在user且用户名存在则更改展示用户名的条件为true
if(user&&user.name){
this.setData({
loginOK:true,
name:user.name
})
}else{
this.setData({
loginOK:false
})
}
},
// 退出登录
//退出登陆后将storage中的user清空
tuichu(){
wx.setStorageSync('user', null)
//校验
let user=wx.getStorageSync('user')
if(user&&user.name){
this.setData({
loginOK:true,
name:user.name
})
}else{
this.setData({
loginOK:false
})
}
} })

微信小程序常见两种登陆注册方式(一)的更多相关文章

  1. 微信小程序中两种回到顶部按钮的效果实现

    一,使用view形式的回到顶部HTML: <image src='../../img/button-top.png' class='goTop' hidden='{{!floorstatus}} ...

  2. 官方问答--微信小程序常见FAQ (17.8.21-17.8.27)

    给提问的开发者的建议:提问之前先查询 文档.通过社区右上角搜索搜索已经存在的问题. 写一个简明扼要的标题,并且正文描述清楚你的问题. 提交 BUG:需要带上基础库版本号,设备信息(iOS, Andro ...

  3. 微信小程序的两个BUG?

    微信小程序的两个BUG,也许可能是我搞错了 1.wx.uploadFile 用循环上传图片的时候,电脑.苹果手机上都会正常,安卓机上面则会出现the same task is working的问题 2 ...

  4. 小程序-文章:微信小程序常见的UI框架/组件库总结

    ylbtech-小程序-文章:微信小程序常见的UI框架/组件库总结 1.返回顶部 1. 想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小 ...

  5. 微信小程序常见错误及基本排除方法

    也接触了不少人解决问题的过程里,有一些比较难以排查的可能性列举在这,方便大家看一下:   也欢迎大家把自己常用的排除方法列举在这,一起互相学习探讨!1:ES6:使用es6可能导致安卓端真机调试时很多问 ...

  6. 微信小程序 服务器端生成用户登陆环节的 3rd_session

    一.环境: CentOS 6.8 nginx 1.8.0 php 7.0.10 二.背景 最近在开发一个微信小程序,不可避免的涉及到登陆的环节,登录时序图如下: 通过 wx.login() 获取到用户 ...

  7. 微信小程序开发 - 用户授权登陆

    准备:微信开发者工具下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 微信小程序开发文档:htt ...

  8. 微信小程序常见的坑

    wxml的标签跟html里面的一些标签是一样的,比如view标签相当于div标签,text标签相当于span标签. 在微信小程序中,表单元素都是原生组件,微信小程序中原生组件层级最高,所以在用inpu ...

  9. 原创:微信小程序+WEB使用JS实现注册【60s】倒计时功能

    1.效果图: 2.页面仅仅利用了JS的相关功能,包含:wxml.js.wxss 2.1wxml页面代码: <text>绑定手机</text> <form bindsubm ...

随机推荐

  1. Android官方文档翻译 五 1.3Building a Simple User Interface

    Building a Simple User Interface 创建一个简单的用户界面 This lesson teaches you to 这节课将教给你: Create a Linear Lay ...

  2. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  3. 44.Prim算法

    public static void main(String[] args) { //测试看看图是否创建ok char[] data = new char[]{'A','B','C','D','E', ...

  4. rpc基础讲解

    什么是RPC 本地过程调用 远程过程调用带来的3个问题 RPC的调用过程 RPC的具体过程如下 总结 RPC.HTTP.Restful之间的区别 通过httpserver实现rpc 首先一点需要明确: ...

  5. 返回void-(响应ajax,响应json格式)(了解)

    将jquery库文件加入到idea中 引入json依赖 index.jsp中 设置按钮发起ajax请求 从处理器方法返回void,响应ajax请求 MyController中

  6. 001 研发同学必学哪些 Linux 命令?

    01 研发同学为啥要掌握 Linux 命令? 身为研发同学,Linux 是绕不过去的一个小山包,不是说要掌握的十分精通,在程序员界里做个极客,也不是说要抢了 Devops 同学的饭碗,但至少要做到摆脱 ...

  7. 无法自动装配。未找到 ‘xxxx’ 类型的 Bean。

    无法自动装配.未找到 'xxxx' 类型的 Bean. 1.解决办法 打开设置,找到编辑器->检查.把"自动装配Bean类",取消勾选,点击应用.确定.

  8. 『无为则无心』Python函数 — 40、Python自定义异常

    目录 1.使用 raise 语句来抛出异常 (1)抛出异常类 (2)抛出异常类的实例 2.自定义异常类 (1)简单实现 (2)完整实现 在Python中,抛出自定义异常的语法为 raise 异常类对象 ...

  9. LoadRunner编写socket性能测试脚本

    利用LoadRunner编写socket性能测试脚本 一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socke ...

  10. gcc 11.2 在线升级

    环境:centos 7 1.准备开发环境 $ yum groupinstall "Development Tools" $ yum install glibc-static lib ...