多信息登录、检测用户信息是否完善且引导补全

大家好,我是雄雄,欢迎关注:穆雄雄的博客

前言

现在是2022年4月28日13:41:29

今天分享两块内容。

1.需求:用户可以通过手机号、邮箱来注册我们的系统,用户完成之后,可以去完善自己的个人信息,比如修改手机号,邮箱以及用户名。下次上来,用户可以使用手机号、邮箱以及用户名三种中的任何一种方式登录系统。

2.登录系统之后,检测用户信息是否完善,比如手机号、邮箱、用户名等,如果不完善,则引导用户去完善个人信息,完善了之后就可以用不同信息对其账号登录。

实现方法

使用手机号、邮箱、用户名以及账号登录系统

其实这个实现起来挺简单的,就是当时绕了很大的坑,给绕进去了。。。。刚开始想了个很简单的方法,就是:判断当前输入的信息长度是不是11位,是的话就是手机号,不是的话,看看有没有@符号,有则是邮箱,否则是账号;但是后来仔细琢磨了下,万一有的用户的账号正好也是11位呢,岂不是直接就乱了。

像这样的需求,直接可以在后台的sql中实现,但当时写sql的时候写了好几种形式:

第一种:

	SELECT * FROM blade_user WHERE (email='muxiongxiong' AND PASSWORD = 'muxiongxiong')OR (NAME = 'muxiongxiong'  AND PASSWORD = 'muxiongxiong')OR (phone = 'muxiongxiong'  AND PASSWORD = 'muxiongxiong')OR (account = 'muxiongxiong'  AND PASSWORD = 'muxiongxiong')

第二种:

	SELECT * FROM blade_user  
WHERE email || NAME || phone || account LIKE '%muxiongxiong%'  AND PASSWORD = 'muxiongxiong'

第三种:

	SELECT * FROM blade_user  WHERE (email= 'muxiongxiong' OR NAME= 'muxiongxiong' OR phone= 'muxiongxiong' or account ='muxiongxiong')  AND PASSWORD = 'muxiongxiong'

第一种和第三种基本上一样,第二种写法比较新奇,思路是这样的,将这几个字段,用户名,邮箱,电话,账号都拼接在一起,然后通过模糊查询的like去匹配,然后和密码比对进行查询。这几种方式的效率基本都差不多,用哪种都可以。前提是得限制用户的手机号,邮箱,账号以及用户名都是唯一的,极端情况下的话,就是A的账号和B的手机号一样,或者其他字段一样,可能会查询出来多条数据。

刚开始绕弯是因为我把手机号、邮箱等这几个字段理解成了不一样的了,于是结果总是有好多个,还以为自己的sql写错了呢,后来朋友看出来了问题所在,一语指出…

检测用户信息是否完善,否则引导其去完善

登录系统之后需要先拿到当前用户的信息,如果检测到手机号等信息都是完整的,就不需要操作,否则弹框提醒用户去完善个人信息,如下图所示:

点击确认即可直接去个人中心完善自己的信息。

关于弹出框的时机,之前考虑过一进首页就加载,弹出一遍;但是当在使用的过程中,发现这样用户体验度太不好了,包括刷新当前页面的时候也会出现,所以这种方法果断放弃。于是想到了加个标识,每隔20分钟弹出一次,最后发现这种方法在页面加载的时候,也会重复执行,也放弃了。

后来同事用了个别的方法,就是用户首次登陆的时候检测,然后弹出框。通过session的方法来实现的,效果还不错,下面是实现的代码:

	 //查询当前用户的信息getCurrentUserInfoDetail(){if(!sessionStorage.getItem("isReload")){//存入sessionsessionStorage.setItem("isReload","true");if(!this.isShowUserInfo){this.isShowUserInfo = true;getCurrentUserInfo().then(res=>{this.userDetails = res.data.data;//查看手机号,邮箱,用户名是否为空,是的话跳转到个人信息进行维护if(this.userDetails.phone == null || this.userDetails.email == '' || this.userDetails.name == ''){//弹出确认的框this.$confirm('您的个人信息不完善,请前往个人信息进行维护', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {//确定走这里console.log("确定");this.$router.push({path: '/info'});}).catch(() => {//取消的话走这里});}});}}},//取消的话走这里});}});}}},

sessionStorage就是vue页面使用的session,不用导入,可以直接拿出来用,给session中设置值: sessionStorage.setItem("isReload","true");,从session中获取值:sessionStorage.getItem("isReload"),这样就可以实现初次登录提醒,后面不管在怎么加载都不会提醒了。

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

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

相关文章

Ch4302-IntervalGCD【线段树,树状数组,GCD】

正题 题目链接:http://contest-hunter.org:83/contest/0x40%E3%80%8C%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%BF%9B%E9%98%B6%E3%80%8D%E4%BE%8B%E9%A2%98/4302%20Interval%20GCD 题目大意 要求支持区间修改和区间求gcd。 解题思路 如果直接线段树gcd的话,区间…

PNG 图片压缩原理解析

转载自 PNG 图片压缩原理解析 什么是PNG PNG的全称叫便携式网络图型(Portable Network Graphics)是目前最流行的网络传输和展示的图片格式,原因有如下几点: 无损压缩:PNG图片采取了基于LZ77派生算法对文件进行压缩&…

element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 现在是2022年5月3日11:47:15!劳动节假期已经过去了三天了,今天是被封家里的第7天,也是解封的第一天。 说实话,在家里的工作效率一点都…

POJ2182-Lost Cows【树状数组,二分】

正题 题目链接:http://poj.org/problem?id2182 题目大意 给出每头牛前面有多少个比它高的,求每头牛的最大高度。 解题思路 建立一个01序列,表示每个高度是否被占用过,然后倒序扫描每次找到一个没有被占用的第Ai1个位置,然后标…

TypeScript 2.5 发布,增加语言级重构

在 TypeScript 2.5 版本中,Microsoft 专注于提高开发人员的生产力,其范围已经超出了代码编辑器所提供的常见功能。 习惯于类型语言(如 C#)的开发人员喜欢使用那些可以轻松执行常见重构的工具。现在 TypeScript 可以利…

永远不要在 MySQL 中使用 UTF-8

转载自 永远不要在 MySQL 中使用 UTF-8 最近我遇到了一个 bug&#xff0c;我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串&#xff0c;然后出现了一个离奇的错误&#xff1a; Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘sum…

element ui实现多层级复杂表单的操作(添加与回显)之添加功能实现

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日13:35:15&#xff01;文接上篇。[element ui实现多层级复杂表单的操作&#xff08;添加与回显&#xff09;之表单操作交互操作](element ui实现多层级复杂表单的操…

POJ1151-Atlantis【线段树,扫描线,离散化】

正题 题目链接:http://poj.org/problem?id1151 题目大意 有n个矩形&#xff0c;求所以矩形的覆盖面积。 解题思路 我们用离散化一个坐标&#xff0c;然后每次用线段树维护这个宽度内覆盖高度和&#xff0c;然后定义左上的点是加入&#xff0c;右下的点是弹出。 code #incl…

Entity Framework Core Like 查询揭秘

在Entity Framework Core 2.0中增加一个很酷的功能&#xff1a;EF.Functions.Like()&#xff0c;最终解析为SQL中的Like语句&#xff0c;以便于在 LINQ 查询中直接调用。 不过Entity Framework 中默认提供了StartsWith、Contains和EndsWith方法用于解决模糊查询&#xff0c;那…

JVM发生OOM的 8 种原因、及解决办法

转载自 JVM发生OOM的 8 种原因、及解决办法 1、Java 堆空间 发生频率&#xff1a;5颗星 造成原因 无法在 Java 堆中分配对象 吞吐量增加 应用程序无意中保存了对象引用&#xff0c;对象无法被 GC 回收 应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。fina…

element ui实现多层级复杂表单的操作(添加与回显)之回显功能实现

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月3日17:02:30&#xff01;文接上两篇。 [element ui实现多层级复杂表单的操作&#xff08;添加与回显&#xff09;之表单操作交互操作](element ui实现多层级复杂表单…

在Mac的Docker中运行DotNetCore2.0

最近学习Angular4&#xff0c;服务端准备使用DotNetCore API来实现&#xff0c;本文简单介绍下在Mac中怎样将DotNetCore程序部署在Docker中&#xff0c;并使用Nginx做反向代理让程序可以跑起来。 具体步骤如下 安装Docker拉取DotNetCore镜像使用VS For Mac创建DotNetCore应用…

POJ2482-Stars in Your Window【线段树,扫描线,离散化】

正题 题目链接:http://poj.org/problem?id2482 题目大意 有若干个点&#xff0c;每个点有不同的权值&#xff0c;求用一个h*w的矩阵扩起来的权值最大。 解题思路 先离散化一个坐标&#xff0c;然后另一个坐标就在x∼xw−1x∼xw−1这个区域加上权值&#xff0c;然后每个点的…

20个高级Java面试题汇总

转载自 20个高级Java面试题汇总 译文链接&#xff1a;http://www.codeceo.com/article/20-java-advanced-interview-questions.html 英文原文&#xff1a;Advanced Java Interview Questions 翻译作者&#xff1a;码农网 – 小峰 这是一个高级Java面试系列题中的部分。这一部分…

springboot实现复杂业务下的更新操作

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月4日19:25:55&#xff01;今天写了个这样的功能&#xff1a; 某用户在一天内有多个训练项目&#xff0c;比如&#xff1a;晨跑&#xff0c;有氧训练&#xff0c;跳绳这…

HDOJ5542-The Battle of Chibi【树状数组,dp】

正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid5542 题目大意 求序列A有多少个长度为M的递增子序列。 解题思路 用fi,jfi,j表示长度为i&#xff0c;以AjAj结尾的序列的个数。然后显然得出动态转移方程通过上一次从任意一个地方转移&#xff0c;动态转移方程&…

ASP.NET Core中为指定类添加WebApi服务功能

POCO Controller是 ASP.NET Core 中的一个特性&#xff0c;虽然在2015年刚发布的时候就有这个特性了&#xff0c;可是大多数开发者都只是按原有的方式去写&#xff0c;而没有用到这个特性。其实&#xff0c;如果利用这个特性进行稍微封装后&#xff0c;用在SOA架构中Service层的…

elementui解决el-dialog不清空内容的问题,el-dialog关闭时销毁子组件

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是2022年5月5日22:48:21&#xff01; 今天在使用element-ui中的el-dialog的时候遇到了个这样的问题&#xff1a;页面上点击添加的按钮&#xff0c;弹出el-dialog对话框&#xff…

MySQL 中的重做日志,回滚日志以及二进制日志的简单总结

转载自 MySQL 中的重做日志&#xff0c;回滚日志以及二进制日志的简单总结 MySQL中有六种日志文件&#xff0c;分别是&#xff1a;重做日志&#xff08;redo log&#xff09;、回滚日志&#xff08;undo log&#xff09;、二进制日志&#xff08;binlog&#xff09;、错误日志…

c语言分离三位数

#include<stdio.h> main(){ int k,l,m,n;printf("请输入一个三位数"); scanf("%d",&k);lk/100;mk/10%10;nk%10;printf("这个三位数的百位是:%d\n",l);printf("这个三位数的十位是:%d\n",m);printf("这个三位数的个位是…