微信小程序短信验证登录

article/2025/9/15 16:17:12

首先小程序wxml页面

<!--pages/logins/logins.wxml-->
<view class="container"><view class="title">登录</view><form catchsubmit="login"><view class="inputView"><input class="inputText" placeholder="请输入手机号" name="phone" bindblur="phone" /></view><view class="inputView"><input class="inputText" placeholder="请输入验证码" name="code" bindblur="sms" /><button class="line" disabled="{{disabled}}" size="mini" bindtap="sendcode">{{codebtn}}</button></view><view class="loginBtnView"><button class="loginBtn" type="primary" formType="submit">登录</button></view></form>
</view>

wxss样式

.container { display: flex;  flex-direction: column; padding: 0; } .inputView { line-height: 45px; border-bottom:1px solid #999999;} 
.title{width: 80%;font-weight: bold;font-size: 30px;
}.inputText { display: inline-block; line-height: 45px; padding-left: 10px; margin-top: 11px;color: #cccccc; font-size: 14px;} .line {border: 1px solid #ccc;border-radius: 20px; float: right; margin-top: 9px;color: #cccccc;} .loginBtn { margin-top: 40px; border-radius:10px;}

js页面书写

// pages/my/my.js
Page({/*** 页面的初始数据*/data: {phone:'',code: '',codebtn:'发送验证码',disabled:false,},/*** 获取手机号并验证*/phone(e){let phone =e.detail.valuelet reg = /^[1][3,4,5,7,8][0-9]{9}$/;if(!reg.test(phone)){// 弹窗提示wx.showToast({title: '手机号码格式不正确',icon:"none",duration:2000})return false;}this.setData({phone:phone})},/*** 发送验证码*/sendcode(){let phone = this.data.phonewx.request({url: 'http://www.exercise.com/login.php/phone', //仅为示例,并非真实的接口地址data: {phone:phone},header: {'content-type': 'application/json' // 默认值},success (res) {console.log(res)// 发送验证码错误信息if(res.data.code==100){let info = res.data.msgwx.showToast({title: info,icon:"error"})}// 验证码发送成功提示if(res.code==200){wx.showToast({title: '验证码已发送,请注意接收',icon:"success"})}// 频繁点击提示if(res.code==100){wx.showToast({title: '点击频繁',icon:"error"})}}})
},
/*** 登录点击事件*/
login(e){console.log(e.detail.value.code)let sms=e.detail.value.codelet phone = e.detail.value.phoneif(phone==""){wx.showToast({title: '手机号不能为空',icon:"error"})}if(sms==""){wx.showToast({title: '验证码不能为空',icon:"error"})}wx.request({url: 'http://www.exercise.com/login.php/sms', //仅为示例,并非真实的接口地址data: {sms:sms,phone:phone},header: {'content-type': 'application/json' // 默认值},success:(e)=>{// 登录失败返回错误提示if(e.data.code==100){let info = e.data.msgwx.showToast({title: info,icon:"error"})}// 登陆成功跳转页面if(e.data.code==200){wx.switchTab({url: '/pages/list/list',})}}})
},
})

后端代码

发送短信验证码见(1条消息) 腾讯云短信发送php_呀哈的博客-CSDN博客_php发送腾讯云短信icon-default.png?t=M1L8https://blog.csdn.net/weixin_43321108/article/details/122139533?spm=1001.2014.3001.5501

 控制器层

/*** 发送短信验证码* @param Request $request* @return \think\response\Json|void*/public function sendSms(Request $request){$phone=$request->get('phone');// 生成随机验证码$code=rand(00000,9999);if (Cache::get("$phone"."_time")){return fail('发送次数频繁');}
//        $res=SendSms::sendInfo($code,$phone);// 将验证码放入缓存Cache::set("$phone"."_code","$code",300);// 缓存验证码发送时间Cache::set("$phone"."_time",time(),60);return success($code);}/*** 验证短信* @param Request $request* @return \think\response\Json|void*/public function smsLogin(Request $request){$sms=$request->get('sms');$phone=$request->get('phone');$code=Cache::get("$phone"."_code");$info=LoginBusiness::sms($code,$sms);if (!empty($info)){return fail($info);}Login::addUserByPhone($phone);return success($phone);}

business逻辑层

<?phpnamespace app\login\business;class SendSms
{public static function sendInfo($code,$phone){$app_id = config('sms.app_id');$app_key = config('sms.app_key');$template_id = config('sms.template_id');$sms_sign = config('sms.sms_sign');try {$sender = new \Qcloud\Sms\SmsSingleSender($app_id, $app_key);$params = [$code];$result = $sender->sendWithParam("86", $phone, $template_id,$params, $sms_sign, "", "");  // 签名参数未提供或者为空时,会使用默认签名发送短信$rsp = json_decode($result);if ($rsp->result == 0) {//0代表成功return '发送成功';}\think\facade\Log::error('发送短信验证码失败:' . $result);} catch (\Exception $e) {}return '发送失败';}}


http://chatgpt.dhexx.cn/article/jUHNnKrI.shtml

相关文章

Springboot实现短信验证登录

一、介绍 使用短信验证登录也是现在实际项目中普遍使用的一种登录, 二、实际的操作流程 1.用户在前端页面输入手机号码之后,点击发送验证码 2.前端将手机号传给后端 3.后端生成一个6为的随机数通过短信发送给用户,之后将手机号设为key,验证码设为value存入redis缓存中…

html短信验证登录

最近在做项目中遇到了一个问题&#xff0c;做的是一个后台管理。都知道&#xff0c;后台是需要一定安全性的&#xff0c;所以一定要有登录这个功能的。然而登录这个功能&#xff0c;又有一个不可或缺的因素&#xff0c;那就是验证登录。不论是图形验证也好&#xff0c;还是什么…

spring security——短信验证码登录(四)

一、导读 短信登录和用户名密码登录的逻辑是不同的&#xff0c;Spring Security 框架中实现的是用户名密码的登录方式。现在我们就模仿它的原理来加入短信登录的认证&#xff08;注意不是验证&#xff09;&#xff0c;实现右边的。 之前写的图形验证码是在 UsernamePasswordAut…

雅克比矩阵求导推导

首先&#xff0c;引入雅克比矩阵公式&#xff1a; J [ u 1 u 2 ⋯ u n e 1 e 2 ⋯ e n ] \mathbf{J}\left[\begin{array}{c} \begin{array}{lll}\mathbf{u}_{1} & \mathbf{u}_{2} & \cdots & \mathbf{u}_{n}\end{array} \\ \begin{array}{lll}\mathbf{e}_{1} &…

矩阵求导公式

转自&#xff1a;http://blog.sina.com.cn/s/blog_4a033b090100pwjq.html 求导公式(撇号为转置&#xff09;&#xff1a; Y A * X --> DY/DX A Y X * A --> DY/DX A Y A * X * B --> DY/DX A * B Y A * X * B --> DY/DX B * A 乘积的导数 d(f*g)/dx(df/dx)…

矩阵求导法则的总结

最重要的写在前面&#xff1a; 进行更新&#xff1a;随着理解的加深&#xff0c;我发现之前写的有些问题&#xff0c;重新写一下吧 矩阵求导要分成两类&#xff0c;第一类是用在向量函数f(x)里&#xff0c;比如要在x0处展开&#xff0c;所以需要计算该点处的雅可比这些&#…

-矩阵求导-

一、为什么需要矩阵求导 参数的向量化&#xff1a; 向量化会使代码、式子更加简洁&#xff1b; 使用向量化代替for循环&#xff0c;向量化能够加速你的代码&#xff1b;求导在优化算法中的广泛应用&#xff1a; 优化算法需要反向传播&#xff0c;需要对参数矩阵进行求导 二、…

矩阵求导简析

大家好&#xff0c;这是我的第一篇博客。 矩阵求导&#xff08;Matrix Derivation&#xff0c;或者Matrix Differential&#xff09;&#xff0c;在机器学习、图像处理、最优化领域经常会遇到。其本质是多元变量的微积分&#xff0c;只是把求导应用在了矩阵上&#xff0c;不同在…

矩阵求导法则

转载自&#xff1a;https://blog.csdn.net/dinkwad/article/details/72819832 矩阵求导的技术&#xff0c;在统计学、控制论、机器学习等领域有广泛的应用。鉴于我看过的一些资料或言之不详、或繁乱无绪&#xff0c;本文来做个科普&#xff0c;分作两篇&#xff0c;上篇讲标量…

矩阵求导总结

文章目录 1.分子为标量1.1 ∂ 标量 ∂ 标量 \frac{\partial 标量}{\partial标量} ∂标量∂标量​1.2 ∂ 标量 ∂ 向量 \frac{\partial 标量}{\partial向量} ∂向量∂标量​1.3 ∂ 标量 ∂ 矩阵 \frac{\partial 标量}{\partial矩阵} ∂矩阵∂标量​ 2.分子为向量2.1 ∂ 向量…

矩阵求导方法

矩阵求导方法 在机器学习过程中&#xff0c;我们经常会对矩阵进行相关的操作&#xff0c;现对矩阵求导方法进行概况与推导。 首先总结矩阵求导的本质&#xff0c;即矩阵A中每个元素对矩阵B中每个元素求导。我们先从宏观上理解这个公式&#xff0c;即从求导后元素的个数来理解…

矩阵求导

一、矩阵和向量求导 参考地址&#xff1a;https://cloud.tencent.com/developer/article/1668818 求导公式大全&#xff1a;https://cloud.tencent.com/developer/article/1551901 机器学习中最常用的矩阵求导有&#xff1a;标量对矩阵的求导&#xff0c;矩阵对标量求导以…

矩阵求导、几种重要的矩阵及常用的矩阵求导公式

一、矩阵求导 一般来讲&#xff0c;我们约定x(x1,x2,...xN)Tx(x1,x2,...xN)T&#xff0c;这是分母布局。常见的矩阵求导方式有&#xff1a;向量对向量求导&#xff0c;标量对向量求导&#xff0c;向量对标量求导。 1、向量对向量求导 2、标量对向量求导 3、向量对标量求导 其他…

矩阵求导(本质、原理与推导)详解

矩阵求导是机器学习与深度学习的基础&#xff0c;它是高等数学、线性代数知识的综合&#xff0c;并推动了概率论与数理统计向多元统计的发展。在一般的线性代数的课程中&#xff0c;很少会提到矩阵导数的概念&#xff1b;而且在网上寻找矩阵求导的知识点&#xff0c;也是五花八…

矩阵求导常用公式

矩阵求导常用公式 1 引言2 向量的导数2.1 向量对标量求导 Vector-by-scalar2.2 标量对向量求导 Scalar-by-vector2.3 向量对向量求导 Vector-by-vector 3 矩阵的导数3.1 矩阵对标量求导 Matrix-by-scalar3.2 标量对矩阵求导 Scalar-by-matrix 4 常用求导公式4.1 向量对向量求导…

矩阵的求导

目录 1 布局(Layout) 1.1 矩阵向量求导引入 1.2 矩阵向量求导定义 1.3 矩阵向量求导布局 1.4 分母布局的另一种求解方法 1.5 总结 2 基本的求导规则 2.1 向量对标量求导&#xff08;相对于数量变量的微分&#xff0c;即自变量是数量变量&#xff09; 2.1.1 定义 2.1.…

JAVA—IO流详解

1. 流概述 1.1. 什么是IO IO:Input/Output即输入&输出&#xff0c;也称之为流&#xff08;河流&#xff0c;水流&#xff09;&#xff0c;指的是数据从一个地点到另一个地点过程&#xff1b;对于计算机来说文件的拷贝过程&#xff0c;文件的编写保存&#xff0c;显示功能…

Java高级特性-IO流

文章目录 前言一、什么是IO流二、字节流-输入输出三、字符流 - 输入输出四、复制文件五、总结 前言 在Java开发中我们经常会涉及到文件方面的操作&#xff0c;不论是网站的上传文件&#xff0c;还是服务器提供给客户端下载文件&#xff0c;这些都需要我们来处理&#xff0c;那J…

java IO流之BufferedReader和BufferedWriter

前言&#xff1a; &#x1f44f;作者简介&#xff1a;我是笑霸final&#xff0c;一名热爱技术的在校学生。 &#x1f4dd;个人主页&#xff1a;笑霸final的主页 &#x1f4d5;系列专栏&#xff1a;&#xff1a;本文写在java专栏 &#x1f4e7;如果文章知识点有错误的地方&#…

IO流详解

文章目录 IO流IO流分类FileInputStream输入流框架相对路径读取过程详解available()skip(long n) FileOutputStream输入流框架 FileReaderFileWriter文件复制FileInputStream 、FileOutputStreamFileReader 、FileWriter 缓冲流BufferedReader 数据专属流DataOutputStreamDataIn…