微信小程序如何实现登陆和注册功能?

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:微信小程序开发

🅰

请添加图片描述


文章目录

    • 🅰
    • 前言
    • 🎶一、实现注册界面
      • (1)logs.wxml
      • (2)logs.wxss
      • (3)logs.js
    • 🎶 二、实现登陆页面
      • (1)user.wxml
      • (2)user.wxss
      • (3)user.js
        • 结束语🥇


前言

  在当今数字化的时代,微信小程序以其便捷、高效和轻量的特点,成为了人们获取服务和信息的重要途径。而登录和注册功能作为小程序与用户建立连接的关键环节,不仅关乎用户体验,更是保障数据安全和个性化服务的基础。
  实现微信小程序的登录和注册功能,旨在为用户提供一种无缝、流畅的交互方式,让他们能够轻松地进入小程序的世界,享受到专属的服务和内容。通过精心设计的登录和注册流程,我们致力于在保障用户隐私的前提下,准确识别用户身份,为其提供个性化的推荐、定制化的设置以及安全可靠的信息存储。
  无论是新用户初次踏入小程序的大门,还是老用户的再次归来,登录和注册功能都将成为他们与小程序之间信任与便捷的桥梁,为用户开启一段精彩的数字化体验之旅。


🎶一、实现注册界面


  在微信小程序的生态中,注册界面是用户与小程序建立深度关联的起点。它如同一张邀请函,诚挚地邀请用户踏入一个充满可能的数字领域。
  精心构建的注册界面,旨在为用户提供流畅、便捷且安全的注册体验。我们深知,每一位用户的时间都无比珍贵,因此致力于以最简捷的流程、最清晰的指引,让用户能够轻松完成注册,开启个性化的小程序之旅。
  注册界面不仅是用户信息的收集入口,更是传递信任与友好的窗口。通过人性化的设计,我们力求消除用户在注册过程中的疑虑和困惑,为他们营造一个安心、舒适的环境,使其愿意将个人信息托付给我们,从而畅享小程序所提供的独特服务和价值。

(1)logs.wxml

<!--logs.wxml-->
<view class="v1" style="height:{{clientHeight?clientHeight+'px':'auto'}}"><!-- v2父容器  子view使用绝对布局 --><view class="v2"><view class="dltext" style="width: 232rpx; height: 92rpx; display: block; box-sizing: border-box; left: 0rpx; top: -2rpx">登录</view><!-- 手机号 --><view class="phoneCs"><!-- <image src="/images/zhang.png" class="ph"></image> --><input id='account' placeholder="请输入账号" type="number" bindinput="accountInput"/></view><!-- 密码 --><view class=passwordCs"><!-- <image src="/images/mi.png" class="ps"></image> --><input id='pwd' placeholder="请输入密码" type="password" bindinput=passwordInput" /></view><!-- 登录按钮 --><view class="denglu" bindtap="login"><button class="btn-dl" type="primary" bindtap="goadmin">登录</button></view></view></view>

(2)logs.wxss


.v1{display: block;position:absolute;width: 100%;background-color: rgb(243, 227, 227);
}
/* 白色区域 */
.v1 .v2{position: relative;margin-top: 150rpx;left: 100rpx; width: 545rpx;height: 600rpx;background-color: rgb(230, 198, 198);border-radius: 50rpx;
}
/* 白色区域内的登录文本 */
.v1 .v2 .dltext{margin-top: 50rpx;position: absolute;margin-left:50rpx;width: 150rpx;height: 100rpx;font-size: 60rpx;font-family: Helvetica;color: #000000;line-height: 100rpx;letter-spacing: 2rpx;
}
/* 手机图片+输入框+下划线的父容器view */
.v1 .v2 .phoneCs{margin-top: 200rpx;margin-left: 25rpx;position: absolute;display: flex;width:480rpx ;height: 90rpx ;background-color: white;}
/* 手机图标 */
.v1 .v2 .phoneCs .ph{margin-top: 5rpx;margin-left: 30rpx;width: 55rpx;height: 55rpx;
}
/* 手机号输入框 */
.v1 .v2 .phoneCs input{width: 400rpx;font-size: 30rpx ;margin-top: 25rpx;margin-left: 30rpx;}
/* 密码图标+输入框+小眼睛图标+下划线父容器view */
.v1 .v2 .passwordCs{margin-top: 350rpx;margin-left: 25rpx;position: absolute;display: flex;width:480rpx ;height: 90rpx ;background-color:white;}
/* 密码图标 */
.v1 .v2 .passwordCs .ps{margin-top: 5rpx;margin-left: 30rpx;width: 55rpx;height: 55rpx;
}
/* 眼睛 图标*/
.v1 .v2 .passwordCs .eye{margin-top: 5rpx;margin-left: 65rpx;width: 55rpx;height: 55rpx;
}
/* 密码输入框 */
.v1 .v2 .passwordCs input{width: 400rpx;font-size: 30rpx ;margin-top: 25rpx;margin-left: 30rpx;
}
/* 登录按钮容器view */
.v1 .v2 .denglu{width: 480rpx;height: 80rpx;position: absolute;margin-top:515rpx;margin-left:25rpx;}
/* 登录按钮 */
.v1 .v2 .denglu button{padding: 0rpx;line-height: 70rpx;font-size: 30rpx;width: 100%;height: 100%;border-radius: 5rpx;
}

(3)logs.js

// pages/login/login.js
Page({/*** 页面的初始数据*/data: {account:'',password:''},accountInput:function (e) {this.data.account = e.detail.value},passwordInput:function (e) {this.data.password = e.detail.value},regist:function (e) {wx.navigateTo({url: '../enroll/enroll',})},goadmin:function (e) {var that = thisif(that.data.account==''){wx.showModal({title:"提示",content:"请输入用户名/邮箱/手机号",showCancel:false,success(res){}})}else if(that.data.password==''){wx.showModal({title:"提示",content:"请输入密码",showCancel:false,success(res){}})}else{if (that.data.account=='123456'&&that.data.password=='123456') {wx.reLaunch({url: '/pages/index/index',})}else{wx.showModal({title:"提示",content:"账号或密码错误,请动动脑袋自行检查",showCancel:false,success(res){}})}}},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

🦖 运行结果的显示:
在这里插入图片描述


🎶 二、实现登陆页面


  在微信小程序的架构中,登录界面是用户与小程序交互的首要关卡,也是建立信任和个性化服务的起点。它犹如一扇通往精彩数字世界的大门,精心设计的登录界面不仅能为用户带来便捷、高效的登录体验,更是保障用户信息安全和隐私保护的重要防线。
  我们致力于打造一个简洁明了、易于操作的登录界面,让用户在瞬间完成身份验证,无缝融入小程序所提供的丰富功能与服务之中。通过巧妙的布局、清晰的引导和友好的交互设计,无论是新用户的初次邂逅,还是老用户的日常回归,都能感受到我们对用户体验的极致追求。
  这个登录界面不仅仅是一个技术实现,更是我们对用户需求的深度理解和尊重的体现,是开启用户与小程序之间紧密连接和愉快互动的关键钥匙。

(1)user.wxml

<!--pages/users/users.wxml-->
<view class="top-box"><view>Hi</view><view class="next-text">欢迎使用!</view>
</view>
<!-- 登录、注册 -->
<view class="center-box"><view class="nav"><view class="left {{current==1?'select':''}}" bindtap="click" data-code="1"><text>登录</text></view><view class="right {{current==0?'select':''}}" bindtap="click" data-code="0"><text>注册</text></view></view><!-- 登录 --><view class="input-box" hidden="{{current==0}}"><view class="wei-input"><icon type="waiting" color="#44ADFB" size="16"></icon><input class="input" auto-focus placeholder="请输入手机号/登录名"/></view><view class="wei-input"><icon type="success" color="#44ADFB" size="16"></icon><input class="input" auto-focus placeholder="请输入登录密码"/></view><view class="forget"><text>忘记密码</text></view></view><!-- 注册 --><view class="input-box" hidden="{{current==1}}"><view class="wei-input"><icon type="waiting" color="#44ADFB" size="16"></icon><input class="input" auto-focus placeholder="请输入手机号"/></view><view class="wei-input"><icon type="waiting" color="#44ADFB" size="16"></icon><input class="input" auto-focus placeholder="请输入6位验证码"/><text class="input-code" bindtap="getCode">{{codeText}}</text></view><view class="wei-input"><icon type="success" color="#44ADFB" size="16"></icon><input class="input" auto-focus placeholder="请输入密码"/></view><view class="wei-input"><icon type="success" color="#44ADFB" size="16"></icon><input class="input" auto-focus placeholder="请确认密码"/></view></view><view class="sumbit-btn" ><button class="button" style="background-color:#FF0000;font-size: 30rpx;" type="primary">立即{{current==1?'登录':'注册'}}</button></view>
</view>
<!-- 重影 -->
<view class="shadow shadow-1"></view><view class="shadow shadow-2"></view>
<!-- 说明 -->
<view class="bottom-box">
</view>

(2)user.wxss

/* pages/users/users.wxss */
page{height: 100%;background-color: white;margin: 0px;padding: 0px;
}
/* 顶部背景 */
.top-box{height: 30%;background: #FF0000;padding: 30rpx;color: white;font-weight: bold;
}
.next-text{margin-top: 15rpx;
}
/* 内容 */
.center-box{background-color: white;margin: -20% 20rpx 0rpx 20rpx;padding: 25rpx;border-radius: 15rpx;-webkit-filter: drop-shadow(0 0 8rpx #FF0000);filter: drop-shadow(0 0 8rpx #FF0000);
}
/* 导航 */
.nav{display: flex;text-align: center;font-size: 32rpx;margin-bottom: 8%;
}
.left{flex: 1;font-weight: bold;
}
.right{flex: 1;font-weight: bold;
}
.select{font-weight: bold;color: #33ccff;
}
.select text{padding-bottom: 5rpx;border-bottom-left-radius: 10rpx;border-bottom-right-radius: 10rpx;border-bottom: 5rpx solid #33ccff;
}
.wei-input{display: flex;flex-direction: row;align-items: center;margin-top: 40rpx;padding-bottom: 20rpx;border-bottom: 1rpx solid #f1f1f1;
}
.input-box{margin: 20rpx;
}
.input{padding-left: 20rpx;font-size: 30rpx;
}
.input-code{position: absolute;right: 40rpx;font-size: 26rpx;padding: 10rpx 15rpx;color: white;background-color: #FF0000;border-radius: 10rpx;
}
.forget{font-size: 26rpx;color: #FF0000;margin-top: 20rpx;text-align: right;
}
.sumbit-btn{margin: 6% 30rpx 30rpx 30rpx;
}
/* 重影 */
.shadow{box-shadow: 0rpx 0rpx 10rpx 0rpx #FF0000;border-radius: 25rpx;background-color: white;
}
.shadow-1{height: 40rpx;margin: -20rpx 50rpx 0 50rpx;
}
.shadow-2{position: relative;z-index: -888;height: 50rpx;margin: -30rpx 80rpx 0 80rpx;
}
/* 最底部 */
.bottom-box{position:fixed; bottom: 10rpx;width:100%;font-size: 24rpx;color: gray;display: flex;justify-content: center;
}

(3)user.js

// pages/users/users.js
Page({/*** 页面的初始数据*/data: {current:1,codeText:'获取验证码',counting:false,},// 登陆注册监听click(e){let index = e.currentTarget.dataset.code;this.setData({current:index})},//获取验证码 getCode(){var that = this;if (!that.data.counting) {wx.showToast({title: '验证码已发送',})//开始倒计时60秒that.countDown(that, 60);} },//倒计时60秒countDown(that,count){if (count == 0) {that.setData({codeText: '获取验证码',counting:false})return;}that.setData({counting:true,codeText: count + '秒后重新获取',})setTimeout(function(){count--;that.countDown(that, count);}, 1000);},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

🦖运行结果的显示:
在这里插入图片描述


结束语🥇

以上就是微信小程序之列表渲染
持续更新微信小程序教程,欢迎大家订阅系列专栏🔥微信小程序
你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器提交记录有Merge branch消除

背景&#xff1a;在共同开发分支release上&#xff0c;你提交了commit&#xff0c;push到服务器上时&#xff0c;发现有人先比你push了&#xff0c;所以你得先pull&#xff0c; 后再push&#xff0c;然而pull后自动产生了一个Merge branch的一个commit&#xff0c;这个commit本…

递归解决换零钱问题--回顾总结之递归的表达能力

前面为了保持叙述的流畅, 没有做太多的引申, 把总结推迟到了后面. 补上一些总结, 以防止出现 “下面呢? 下面没有了” 的尴尬. 方向性问题 虽然题目在一开始就暗示了这一点, 但首先, 我们还是要问, 它能用递归解决吗? 有点怀疑精神是好的, 既要低头走路, 更要抬头看路, 以防…

JDK14新特征最全详解

JDK 14一共发行了16个JEP(JDK Enhancement Proposals&#xff0c;JDK 增强提案)&#xff0c;筛选出JDK 14新特性。 - 343: 打包工具 (Incubator) - 345: G1的NUMA内存分配优化 - 349: JFR事件流 - 352: 非原子性的字节缓冲区映射 - 358: 友好的空指针异常 - 359: Records…

【JavaScript】解决 JavaScript 语言报错:Uncaught TypeError: XYZ is not iterable

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 对非数组类型使用 for...of 循环2. 对非可迭代对象使用扩展运算符3. 在 Promise.all 中传递非可迭代对象4. 使用解构赋值时&#xff0c;右侧值非可迭代 四、解决方案与预防措施1. 确保使用可迭代对象2. 使用…

各种Attention|即插即用|适用于YoloV5、V7、V8、V9、V10(一)

摘要 本文总结了各种注意力&#xff0c;即插即用&#xff0c;方便大家将注意力加到自己的论文中。 SE import torch from torch import nn class SEAttention(nn.Module): """ SENet&#xff08;Squeeze-and-Excitation Networks&#xff09;中的注意力…

C++进阶(while循环——函数应用)

知识点代码框架总结 输入n组数据 &#xff0c;对n组数据里面的每一组进行处理&#xff08;输出、求和 、运算、其他&#xff09; int n;//几组数据cin >> n;//2while(n--){//对每组数据进行处理}看到下面的样例&#xff0c;肌肉型反映出上面的框架//2// 1 2 3// 4 5 6若…

虚拟机:VMware功能,安装与使用

目录 一、虚拟机介绍 二、VMware 1.介绍 2.安装 &#xff08;1&#xff09;根据提示按步骤安装​编辑 &#xff08;2&#xff09;更改软件的安装地址​编辑 &#xff08;3&#xff09;根据自己的需求选择是否需要软件更新​编辑 &#xff08;4&#xff09;根据需求选择…

自动驾驶中的人机互相接管问题讨论

一、背景 人机接管&#xff08;human takeover&#xff09;是指在自动驾驶过程中&#xff0c;当系统遇到超出其处理能力或预设安全阈值的情况时&#xff0c;将控制权交还给驾驶员的过程。这一环节的设计直接关系到自动驾驶技术的实用性与安全性&#xff0c;是目前研究和实践中…

【SQL】MySQL事务的隔离级别和幻读、脏读和不可重复读

事务的隔离级别是数据库管理系统提供的一种功能&#xff0c;用于控制事务之间的相互影响程度。常见的隔离级别包括&#xff1a; 读未提交 (Read Uncommitted)&#xff1a;允许一个事务读取另一个事务未提交的数据。 读已提交 (Read Committed)&#xff1a;一个事务只能读取另一…

Python应用爬虫下载QQ音乐歌曲!

目录&#xff1a; 1.简介怎样实现下载QQ音乐的过程&#xff1b; 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网&#xff1a; https://y.qq.com/&#xff0c;在搜索栏上输入一首歌曲的名称&#xff1b; 如我在上输入最美的期待&#xff0c;按回车来到这个画面 我们首…

[USACO24OPEN] Smaller Averages G (单调性优化dp)

来源 题目 Bessie 有两个长度为 N的数组&#xff08;1≤N≤500&#xff09;。第一个数组的第 i 个元素为 ai​&#xff08;1≤ai​≤10^6&#xff09;&#xff0c;第二个数组的第 i个元素为bi​&#xff08;1≤bi​≤10^6&#xff09;。 Bessie 希望将两个数组均划分为若干非空…

机器学习(五) -- 监督学习(6) --逻辑回归

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;5&#xff09; -- 线性回归2 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;7&#xff09; --SVM1 前言 tips&#xff1a;标题前有“***”的内…

uniapp 支付宝小程序 芝麻免押 免押金

orderStr参数如下&#xff1a; my.tradePay({orderStr:res, // 完整的支付参数拼接成的字符串&#xff0c;从 alipay.fund.auth.order.app.freeze 接口获取success: (res) > {console.log(免押成功);console.log(JSON.stringify(res),不是JOSN);console.log(JSON.stringify…

使用机器学习 最近邻算法(Nearest Neighbors)进行点云分析 (scikit-learn Open3D numpy)

使用 NearestNeighbors 进行点云分析 在数据分析和机器学习领域&#xff0c;最近邻算法&#xff08;Nearest Neighbors&#xff09;是一种常用的非参数方法。它广泛应用于分类、回归和聚类分析等任务。下面将介绍如何使用 scikit-learn 库中的 NearestNeighbors 类来进行点云数…

[GICv3] 3. 物理中断处理(Physical Interrupt Handling)

中断生命周期 ​​ 外设通过中断信号线生成中断&#xff0c;或者软件生成中断&#xff08;SGI&#xff09;。Distributor 和 ReDistributor 配合按照中断分组和中断优先级仲裁后将最高优先级的中断分发到 CPU interface。cpu interface 向中断发送到 PEPE 读取 IAR 寄存器&am…

使用Java连接星火认知大模型:一个实际案例解析

引言&#xff1a; 随着人工智能技术的快速发展&#xff0c;认知大模型如星火在自然语言处理、语音识别等领域发挥着越来越重要的作用。本文将通过一个实际的Java代码示例&#xff0c;详细讲解如何使用Java连接星火认知大模型&#xff0c;并处理其响应。 1.导入依赖&#xff1…

【防火墙】防火墙安全策略用户认证综合实验

实验拓扑及要求 拓扑搭建及IP配置 防火墙&#xff08;总公司&#xff09;和交换机&#xff08;汇聚生产区和办公区&#xff09;的接口配置 生产区在vlan2&#xff0c;办公区在vlan3&#xff0c;防火墙在G1/0/3接口上创建子接口G1/0/3.1和G1/0/3.2对两个区域分别进行管理 交换…

全国297个地级市 2006年-2021年 绿地面积、建成区绿化覆盖率(数据整理)

城市绿化覆盖数据&#xff1a;评估生态环境与生活质量的指标 城市绿化是衡量一个城市生态环境质量和居民生活质量的重要指标。绿地面积和建成区绿化覆盖率是两个关键的数据点&#xff0c;它们提供了对城市绿化状况的直接观察。 绿地面积与建成区绿化覆盖率的定义&#xff1a;…

【postgresql】锁

PostgreSQL 提供了多种锁模式来控制对表和行的并发访问&#xff0c;以确保数据的一致性和完整性。这些锁模式包括表级锁和行级锁&#xff0c;它们可以由应用程序显式控制&#xff0c;也可以在执行大多数 PostgreSQL 命令时自动获取。 锁类型 PostgreSQL类型的锁包括&#xff…

数据结构(Java):树二叉树

目录 1、树型结构 1.1 树的概念 1.2 如何判断树与非树 1.3 树的相关概念 1.4 树的表示形式 1.4.1 孩子兄弟表示法 2、二叉树 2.1 二叉树的概念 2.2 特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的遍历 1、树型结构 1.1 树的概念 树型结构是一种非线…