小程序手机号注册登录

小程序登录注册全攻略:手机号一键登录、验证码登录与安全实践 用户登录注册是构建任何应用用户体系的基石,其核心在于安全、便捷地验证用户身份。从技术原理上看,现代登录系统通常基于令牌(Token)机制,如JWT,通过加密签名在客户端与服务端之间安全传递用户身份信息,避免了传统的会话管理开销。在移动端和小程序场景中,结合平台提供的原生能力(如微信的openid、unionid)与手机号验证,能极大提升用户体验和安全性。手机号作为强身份标识,通过一键授权或短信验证码方式,实现了快速登录与用户绑定,这是当前提升转化率、保障账户安全的关键技术。具体到小程序开发,微信官方提供了w 阅读详情

用户注册需要获取手机号然后调用第三方接口获取验证码,然后进行验证手机验证码

手机号注册页面

<!-- 绑定手机号 -->
<view class='content'>
 <form bindsubmit="formSubmit">
  <view class='phone-box'>
   <text class='phone'>手机号</text>
   <input name="phone" type='number' placeholder="请输入手机号" maxlength='11' name="phone" class='number' bindinput='lovePhone' />
  </view>
  <view class='phone-box'>
   <text class='phone'>验证码</text>
   <input name="phoneCode" placeholder="请输入验证码" class='number' placeholder-style='color:#bbb' bindinput="yanLoveInput" />
   <view bindtap='yanLoveBtn' class='getNum'>{{getText2}}</view>
  </view>
  <button formType="submit" class='submit'>绑定</button>
 </form>
</view>
css样式页面
.content {
  width: 100%;
  height: auto;
  padding: 0 50rpx;
  box-sizing: border-box;
 }
 .phone-box {
  width: 100%;
  height: 89rpx;
  border-bottom: 1rpx solid #efefef;
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
 }
 .phone {
  color: #333;
  margin-right: 60rpx;
  font-size: 28rpx;
 }
 .number {
  color: #333;
  font-size: 28rpx;
  width: 200rpx;
 }
 .getNum {
  width:210rpx;
  height:48rpx;
  background:rgba(248, 112, 57, 1);
  border-radius:8rpx;
  font-size:28rpx;
  font-family:PingFang-SC-Medium;
  color:rgba(255, 255, 255, 1);
  line-height:48rpx;
  margin-right:36rpx;
  text-align:center;
 }
 .submit {
  width: 480rpx;
  height: 80rpx;
  background: rgba(248, 112, 57, 1);
  border-radius: 8rpx;
  margin-top: 80rpx;
  color: #fff;
  font-size: 32rpx;
 }

js代码块儿


const app = getApp();
Page({
 data: {
  // 验证手机号
  loginPhone: false,
  loginPwd: false,
  loveChange: true,
  hongyzphone: '',
  // 验证码是否正确
  zhengLove: true,
  huoLove: '',
  getText2: '获取验证码',
 },
 // 手机验证
 lovePhone: function (e) {
  let phone = e.detail.value;
  this.setData({ hongyzphone: phone })
  if (!(/^1[34578]\d{9}$/.test(phone))) {
   this.setData({
    lovePhone: false
   })
   //console.log(phone.length)
   if (phone.length >= 11) {
    wx.showToast({
     title: '手机号有误',
     icon: 'none',
     duration: 1000
    })
   }
  } else {
   this.setData({
    lovePhone: true
   })
  }
 },
 // 验证码输入
 yanLoveInput: function (e) {
  let that = this;
  let yanLove = e.detail.value;
  //console.log(yanLove)
  let huoLove = this.data.huoLove;
  //console.log(huoLove)
  that.setData({
   yanLove: yanLove,
   zhengLove: false,
  })
  if (yanLove.length > 4) {
   if (yanLove == huoLove) {
    that.setData({
     zhengLove: true,
    })
   } else {
    that.setData({
     zhengLove: false,
    })
    wx.showModal({
     content: '输入验证码有误',
     showCancel: false,
     success: function (res) { }
    })
   }
  }
 },
 // 验证码按钮
 yanLoveBtn: function () {
  let loveChange = this.data.loveChange;
  //console.log(loveChange)
  let lovePhone = this.data.lovePhone;
  //console.log(lovePhone)
  let phone = this.data.hongyzphone;
  console.log(phone)
  let n = 59;
  let that = this;
  if (!lovePhone) {
   wx.showToast({
    title: '手机号有误',
    icon:"none",
    duration: 1000
   })
  } else {
   if (loveChange) {
    this.setData({
     loveChange: false
    })
    let lovetime = setInterval(function () {
     let str = '(' + n + ')' + '重新获取'
     that.setData({
      getText2: str
     })
     if (n <= 0) {
      that.setData({
       loveChange: true,
       getText2: '重新获取'
      })
      clearInterval(lovetime);
     }
     n--;
    }, 1000);
    //获取验证码接口写在这里
    //例子 并非真实接口
    // app.agriknow.sendMsg(phone).then(res => {
    //  console.log('请求获取验证码.res =>', res)
    // }).catch(err => {
    //  console.log(err)
    // })
    wx.request({
      url: 'http://day528.exam9.com/getCode',
      data:{phone:phone},
      success:function(res){
         //console.log(res.data)
        // var code = res.data.data;
        if(res.data.data==500){
           console.log(res.data)
          wx.showToast({
            title: '一分钟后点击发送',
          })
          return false;
        };
        if(res.data.code==200){
         wx.showToast({
           title: '发送成功',
         })
       };
      }
    })
   }
  }
 },
 //form表单提交
 formSubmit(e){
  let val = e.detail.value 
  console.log('val', val)
  var phone = val.phone //电话
  var phoneCode = val.phoneCode //验证码
  wx.request({
    url: 'http://day528.exam9.com/login',
    data:{
      phone:phone,
      phoneCode:phoneCode
    },
    success:function(res){
      if(res.data.code == 500){
        wx.showToast({
          title: '验证码错误',
          icon:"none",
        })
        return false;
      }
      if(res.data.code == 200){
         wx.navigateTo({
        url: '/pages/list/list',
      })
      }
    }
  })
 },
})

后台调用第三方接口

  //小程序手机验证码
    public function getCode(Request $request)
    {
        //当用户点击手机号时先去缓存中查询,当前时间-缓存时间如果大于60s,允许用户继续获取验证码,否则给出提示
        //获取手机号
        $phone=$request->input('phone');
        //print_r($phone);die();
        //设置当前时间戳
        $time=time();
        if (Cache::has($phone)){
           // Cache::pull($phone,)
            if ($time - Cache::get($phone) > 60){
                //print_r(Cache::get('time'));die();
                $content="【创信】你的验证码是:5873,3分钟有效!";
                $res=$this->sendmsg($phone,$content);
                if ($res) return json_encode(['code'=>200,'data'=>'','msg'=>'发送成功']);
                return json_encode(['code'=>201,'data'=>'','msg'=>'发送失败']);
            }else{
                return ['code'=>500,'data'=>'','msg'=>'一分钟后点击发送'];
            }
        }else{
            $content="【创信】你的验证码是:5873,3分钟有效!";
            $res=$this->sendmsg($phone,$content);
            //发送验证码成功后将当前时间存入缓存,以便下次再次点击的时候进行时间的判断
            Cache::set($phone,time());
            if ($res) return json_encode(['code'=>200,'data'=>'','msg'=>'发送成功']);
            return json_encode(['code'=>201,'data'=>'','msg'=>'发送失败']);
        }

    }

    //使用curl函数库发送请求
    public function curl_request($url, $post = true, $params = [], $https = true)
    {
        //初始化请求
        $ch = curl_init($url);
        //默认是get请求。如果是post请求 设置请求方式和请求参数
        if ($post) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
        }
        //如果是https协议,禁止从服务器验证本地证书
        if ($https) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        }
        //发送请求,获取返回结果
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $res = curl_exec($ch);
        //关闭请求
        curl_close($ch);
        return $res;
    }
    //使用curl_request函数调用短信接口发送短信
    public function sendmsg($phone, $content)
    {
        // 请求地址、appkey
        $gateway = '你的接口请求地址';
        $appkey = '你的appkey';
        // https://way.jd.com/chuangxin/dxjk?mobile=*********&content=【创信】你的验证码是:5873,3分钟内有效!&appkey=您申请的APPKEY
        $url = $gateway . '?appkey=' . $appkey . "&content=" . $content . "&mobile=" . $phone ;

        $res = $this->curl_request($url, false, [], true);
        //处理结果
        if (!$res) {
            return '请求发送失败';
        }
        //解析结果
        $arr = json_decode($res, true);
        if (isset($arr['code']) && $arr['code'] == 10000) {
            //短信接口调用成功
            return true;
        } else {
            /*if(isset($arr['msg'])){
                return $arr['msg'];
            }*/
            return '短信发送失败';
        }
    }

小程序登录

  //小程序登录
    public function login(Request $request)
    {
        //接收手机号和验证码
        $phone=$request->input('phone');
        $data=['phone'=>$phone];
        $phoneCode=$request->input('phoneCode');
        //print_r($phoneCode);die();
        if (empty($phone)){
            return ['code'=>500,'data'=>'','msg'=>'手机号不能为空'];
        }
        //验证码验证
        if ($phoneCode != 5873){
            return ['code'=>501,'data'=>'','msg'=>'验证码有误'];
        }else{
            //判断数据表是否有当前手机号
            $res=\App\Models\Login::where('phone',$phone)->first();
            if ($res){
                //如果登录成功将用户信息存入session,然后根据此信息生成token
                session(['user'=>$res]);
                //然后调用生成token的方法,将生成的token带到小程序当中
                $jwt=$this->lssue($request);
                return ['code'=>200,'data'=>$res,'jwt'=>$jwt,'msg'=>'登录成功'];
            }else{
                $add=\App\Models\Login::create($data);
                //如果登录成功将用户信息存入session,然后根据此信息生成token
                session(['user'=>$add]);
                //然后调用生成token的方法,将生成的token带到小程序当中
                $jwt=$this->lssue($request);
                return ['code'=>200,'data'=>$add,'jwt'=>$jwt,'msg'=>'登录成功'];
            }
        }
    }
少儿舞蹈小程序(20):手机号登录与多角色注册 通过“手机号验证 + 角色选择 + 信息补充”这一套组合拳,我们不仅为少儿舞蹈小程序构建了一个安全、高效且用户体验友好的登录注册系统,更重要的是,我们从一开始就建立了清晰的数据模型和角色划分,为未来实现复杂的业务功能(如排课、点名、家校沟通、权限控制等)铺平了道路。这种思路充分利用了低代码平台的优势,将复杂的后端逻辑封装在简单的API调用中,让开发者能更专注于前端页面的搭建和业务功能的实现。希望这篇博客能为你提供有价值的参考! 阅读详情

相关推荐

手机登登录注册

html5的手机登录的页面。一个很不错的手机登录模板

用户手机号注册登录(包括接口)Android

package com.fangshuoit.kuaikao.activity; import android.content.Intent; import android.os.Bundle; import android.os.PersistableBundle; import android.support.v7.app.AppCompatActivity; import android.

沈行的博客 7022

手机注册V手机登录 2.1.0.zip

DZ插件 手机注册V手机登录 2.1.0 论坛手机注册插件discuz商业插件 dz x3.4破解插件下载 适用版本:X2.5 X3 X3.1 X3.2 X3.3 X3.4 GBK BIG5 UTF8SC UTF8TC 使用手机登录注册的好处? 使用手机注册,不仅提升了网站品质,会员真实性更高,营销推广更精准,而且,能有效防止注册机、程序灌水和人工发广告贴的行为。 插件简介 本插件由智能人机验证服务商VAPTCHA官方提供,国内/国际短信极速发送。DZ唯一免费手机注册插件,官方推荐,傻瓜式操作,全面兼容PC及移动端。 插件特色 使用简单: 无须繁琐设置,无须申请短信接口。短信发送、充值、设置,在插件后台全部搞定。 价格补贴: 短信价格补贴后最低2.2分/条,若使用VAPTCHA折扣卡低至1.76分/条,远低于市场价,参考阿里云短信价格。 短信防刷: 插件整合了VAPTCHA智能人机验证服务,再也不用担心短信库存被恶意刷爆的风险。 售后无忧: 插件免费,服务不打折,遇到任何问题联系客服获取1对1技术支持。 使用方法 Step1. 下载插件 Step2. 到VAPTCHA官网免费获取key及VID Step3. 将key及VID填入插件后台即可使用 注意事项 本插件与原VAPTCHA人机验证插件相互兼容,可以使用相同的key及VID。本插件主要解决手机登录注册,若想在其他模块使用VAPTCHA人机验证,请自行下载【防灌水】智能验证码 插件永久免费,下载即赠送30条测试短信,超出30条,请在插件后台自行充值后使用 V-SMS支持二次开发,仅对使用了VAPTCHA人机验证的短信发送进行价格补贴,若调用短信接口并未回传有效的VAPTCHA验证token,将按正常价格收取短信费用。官方开发文档 亲测是可以的。。

手机app注册登录服务器客户端流程图

近期的项目中还在不断地完善客户端和服务器,并且今天用到了android的id这样的一个属性,下面将具体来说我是怎样使用的 一、现象 其实在我们的手机app中使用的非常广泛,相信大家一定都记得当注册登陆某个软件之后,再次登陆时不需要输入密码,就可以直接进入主界面这项功能,这项功能看着很容易,其实还是包含了一些复杂的内容,其中就包括需要使用android的id 二、实现过程 在

灵魂画师牧码 1万+

C#实现跨域访问共享文件夹的账号密码验证方案

本文详细介绍了在C#中实现跨域访问共享文件夹的账号密码验证方案。通过调用Windows API LogonUser函数,结合LOGON32_LOGON_NEW_CREDENTIALS登录类型,可安全模拟指定用户身份,有效解决工作组与域环境间的文件共享访问难题。文章提供了完整的工具类封装、多种实战场景示例及详细的错误排查指南。

pea55的博客 538

逆向淘宝x-mini-wua:从加密算法到设备指纹的生成逻辑

本文深入剖析了淘宝风控核心参数x-mini-wua的生成逻辑与加密算法。通过逆向分析,揭示了其作为设备“身份证”的作用,详细拆解了从硬件信息采集、SG_INNER_DATA文件解密、关键参数提取到最终长wua合成的完整技术链条,并探讨了模拟生成与绕过风控的实战思路及注意事项。

year5的博客 1075

小程序手机号登录,手机号验证码登录以及注册登录

前言目前大多数常用的小程序都有手机号一键登录这个功能一,手机号登录在微信小程序中,可以通过调用 wx.login() 获取用户的登录凭证 code,然后将 code 发送给后端服务器,由后端通过微信提供的接口获取用户的手机号码。具体步骤如下:登录后复制 // 前端页面的逻辑层 wx.login({ success: ...

weixin_35819549的博客 2406

ALSA音频开发实战:如何用snd_pcm_avail避免缓冲区溢出(附完整代码)

本文深入探讨了在ALSA音频开发中,如何利用`snd_pcm_avail`函数有效管理环形缓冲区,从而避免音频数据溢出或下溢。通过实战代码示例,详细解析了该函数在播放场景下的核心作用,即实时查询可写入的帧数,并构建了自适应写入循环以实现稳健的流量控制,确保音频流的平滑与稳定。

weixin_29183637的博客 461

很火的本机号码一键验证/登录 实现原理和使用

很多APP的目前都支持“本机号码一键登录”功能。本机号码一键登录是基于运营商独有网关认证能力推出的账号认证产品。用户只需一键授权,即可实现以本机号码注册/登录,相比先前的短信验证码流程体验更优。 目前市面上有很多厂商提供三网验证的服务,只不过是对三大运营商的包装。要了解具体的原理可直接看三大运营商相关的介绍。 1.中国移动 中国移动号码认证服务支支持移动、联通、电信三网号码。主要产品功能: 一键登录:依托运营商的移动通信网络,采用通信网关取号技术,准确识别用户流量卡归属的手机号码。在获得用户授权后,App

薛之谦 6915

STM32+W5500实战:5分钟搞定FreeModbus TCP移植(附完整代码)

本文详细介绍了如何在STM32微控制器上,结合W5500以太网芯片,快速完成FreeModbus TCP协议栈的移植,构建稳定可靠的工业级Modbus TCP服务器。内容涵盖硬件连接、软件架构、驱动适配、核心移植代码实现及调试优化技巧,旨在提供可直接应用于实际项目的完整解决方案。

life6的博客 878

C++经典面试题100例及答案

答:把一些具有共性的对象归类后形成一个集合,也就是所谓的类。答:这样可以提高编译效率,因为分开的话只需要编译一次生成对应的.obj文件后,再次应用该类的地方,这个类就不会被再次编译,从而大大的提高了编译效率。答:这种函数会自动为内联函数,这种函数在函数调用的地方在编译阶段都会进行代码替换。答:常对象是指在任何场合都不能对其成员的值进行修改的对象。答:所谓的回调函数,就是预先在系统的对函数进行注册,让系统知道这个函数的存在,以后,当某个事件发生时,再调用这个函数对事件进行响应。

usstmiracle的博客 3万+

微信小程序登录注册流程(获取手机号)

手机号 这是采用微信小程序 静默登陆 无需用户手动输入 信息 只需点击按钮进行授权,便可获取到相关信息 进行一个用户的注册和登录 其实在这些登录流程中,前端能做的是比较少的,提供一个按钮去触发获取手机号 和用户信息 这里要分 两步授权 如果想要获取到用户手机号 和用户信息 这里是隔离操作 相当于 不能一个按钮就完成 业务需求是这样的:小程序点进来之后,需要获取手机号,发送到后台,再通过授权获取用户信息(头像和昵称),保存登录态 其实对登录态尚存在一些不理解之处 后面再补充 // 获取

qq_44897151的博客 2629

【毕设救星】从0到1打造YOLOv8货架商品检测与可视化系统,让你的毕设脱颖而出

本文介绍了一个基于YOLOv8的货架商品检测系统毕设项目。系统采用YOLOv8模型进行商品检测,包含环境搭建、数据集准备、模型训练与验证等完整流程,并开发了可视化UI界面。项目聚焦智能零售应用场景,技术栈完整且易于实现,适合作为计算机视觉方向的毕业设计。文章详细指导了从数据标注、模型训练到界面开发的全过程,提供代码示例和实用建议,帮助学生快速完成毕设并提升答辩表现。

LXY_LOVE36的博客 103

微信小程序获取openid、小程序二维码、手机号、注册登录

class Users extends Common{ /** *notes:获取openid、session_key、unionid */ private $appid = "xxxxxxx"; private $secret = "xxxxxxxxxxx"; public static $OK = 0; public static $IllegalAesKey = -41001; public static $IllegalIv = .

qq_16746785的博客 511

【ComfyUI】Wan2.2 + IndexTTS 图像数字人或动物口播视频生成

本文介绍了一个基于ComfyUI的数字人口播视频生成工作流,整合了IndexTTS和图像处理技术。该系统通过多模型协同工作,实现从形象图、文本和音频输入到自动生成口播视频的全流程。核心包含WanVideo系列模型,通过CLIP Vision、T5文本编码器和Wav2Vec语音模型分别处理视觉特征、语义理解和口型同步。工作流涵盖素材加载、特征提取、音频处理和视频生成等节点,支持人物、动物等多种主体的口播内容创作。该方案自动化程度高,适用于知识讲解、剧情旁白等多种场景,能帮助创作者高效产出高质量口播视频。

Mr数据杨 2048

opencode : 无法将“opencode”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方案

本文主要介绍了opencode : 无法将“opencode”项识别为 cmdlet、函数、脚本文件或可运行程序的名称解决方案,希望能对使用opencode的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 10万+

少儿舞蹈小程序(20):手机号登录与多角色注册。

手机号登录提供便捷的身份验证方式,多角色注册则区分家长、教师和学生等不同身份,确保系统权限分配合理。数据库设计上,用户表与角色表应解耦,通过中间表建立关联,便于后续扩展。数据库设计上,用户表与角色表应解耦,通过中间表建立关联,便于后续扩展。用户输入手机号后,系统发送短信验证码。核心表包括用户表、角色表和用户角色关联表。用户表存储基础信息,角色表定义权限分组,关联表记录用户与角色的多。核心表包括用户表、角色表和用户角色关联表。用户表存储基础信息,角色表定义权限分组,关联表记录用户与角色的多。

Syj_73sd的博客 482

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

laravel8 + 微信小程序手机号登录注册

laravel8 根据手机号获取验证码 存到redis public function getCode(Request $request) { $phone = $request->input('phone'); $code = (new Server())->sendMsg($phone); if ($code) { Cache::store('redis')->put('code_' . $phon

zhnagsan_lisi的博客 631

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

小程序登录注册获取openid解密手机号服务端实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 在2021微信公开小程序分论坛上,微信公布数据称,2020年小程序日活超4亿,活跃小程序增长75%,人均使用小程序个数同比增长25%,使用小程序交易金额同比增长67%。 商业化方面, 2020 年小程序GMV(交易总额)增长超过100%,其中实物商品交易年增长154%,商家自营GMV同比提升255%。 防疫方面,2020年小程序粤康码累计服务超8亿用户,累

zzc1684的博客 2606

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

小程序获取手机号码登录注册

需求 开发微信小程序有获取用户手机号的需求,用户用户注册、登录或者发货等业务需求。本身前后端开发获取用户手机号码是一个很复杂的过程,微信小程序提供的云开发和组件开发使得此业务需求变得相对简单 获取手机号码方法 两种方法 云调用直接获取开放数据 后台校验与解密开放数据 方法一:后台校验与解密开放数据 整体思路 获取临时登录凭证code,然后通过code获取session_key,再结合getPhoneNumber获取到的iv,encryptedData来解密获取到用户手机号。全程使用的是云端安装依赖 实现

优快云YXJY的博客 881

Java实现微信小程序登录注册:获取OpenId和手机号

Java后端接入微信小程序获取用户openId和手机号,简单可用!!!

DuXing99的博客 6896

微信小程序登录与注册(没有连接数据库)(2023年3月31日)

微信小程序登录与注册(没有连接数据库)

qq_52992084的博客 2175

小程序做注册登录功能

1 获取用户信息 这里主要存一些姓名头像等相关: 通过 wx.getUserInfo 获取: {"nickName":"XXX","gender":2,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"China","avatarUrl":"https://XXX"}

github_38928905的博客 1449

微信小程序手机号一键登录--获取用户手机号--微信小程序一键登录

前提:现在微信小程序登录我参考了几个大的公司的登录,基本分下面几种 1、微信用户一键登录,授权用户基本信息,不获取手机号 2、微信手机号一键登录,根据手机号去关联在其他平台数据,用手机号关联。然后再调取用户的基本信息,需要授权。有的不调取用户基本信息,直接用默认的昵称和头像 3、在一个就是先获取微信的用户基本信息,然后再获取手机号,如果不能获取到手机号的话,获取用户的微信没绑定手机号,或者拒绝授权手机号,就不让登录。 我用的是先获取手机号,然后再获取用户的基本信息 PHP代码 ...

qq422431474的博客 1万+

《thinkphp》五、小程序授权注册登录和手机号绑定

《一》、数据库 1、用户记录数据表 CREATE TABLE `wechat_user` ( `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID', `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '用户手机号', `nick_name` varchar(255) NOT NULL DEFAULT '' COMMENT '用户昵称', `avatar_url`

theScoreONE的博客 1112
上一篇: laravel8消息队列、监听成功顺便发送邮件
下一篇: 小程序折线图及tabs的设置
stringQiang
博客等级 码龄5年 36粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值