微信小程序?qū)崿F(xiàn)手機(jī)驗(yàn)證碼登錄
我們的微信小程序里面,手機(jī)驗(yàn)證碼登錄已經(jīng)成為不可缺少的一部門,為此,我寫的這個(gè)手機(jī)驗(yàn)證碼登錄,這里我結(jié)合thinkphp6+微信小程序?qū)崿F(xiàn)
首先我們進(jìn)入小程序頁面:
wxml頁面:
<!--pages/phone/phone.wxml-->
<view class="container">
? <view class="title" ?style='height:{{statusBarHeight+100}}rpx;padding-top:{{statusBarHeight}}rpx;'>登錄</view>
? <form catchsubmit="login">
? ? <view class="inputView">
? ? ? <input class="inputText" value="{{phone}}" placeholder="請輸入手機(jī)號(hào)" name="phone" bindblur="phone" />
? ? </view>
? ? <view class="inputView">
? ? ? <input class="inputText" value="{[code]}" placeholder="請輸入驗(yàn)證碼" name="code" />
? ? ? <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>
?
<button type="primary" open-type="contact">在線咨詢</button>js頁面:
Page({
?
? /**
? ?* 頁面的初始數(shù)據(jù)
? ?*/
? data: {
? ? windowHeight:0,
? ? phone:'',
? ? code:'',
? ? codebtn:'發(fā)送驗(yàn)證碼',
? ? disabled:false,
?
? },
? /**
? ?* 生命周期函數(shù)--監(jiān)聽頁面加載
? ?*/
? onLoad: function (options) {
??
? },
? // 獲取輸入賬號(hào)?
? phone: function (e) {
? ? let phone = e.detail.value;
? ? let reg = /^[1][3,4,5,7,8][0-9]{9}$/;
? ? if (!reg.test(phone)) {
? ? ? wx.showToast({
? ? ? ? title: '手機(jī)號(hào)碼格式不正確',
? ? ? ? icon:"none",
? ? ? ? duration:2000
? ? ? })
? ? ? return false;
? ? }
? ? this.setData({
? ? ? phone: e.detail.value
? ? })
? },
? //發(fā)送驗(yàn)證碼
? sendcode(res){
? ? var phone=this.data.phone;
? ? var time = 60;
? ? var that=this;
? ? wx.request({
? ? ? url: 'http://www.easyadmin.com/api/phone',
? ? ? data:{
? ? ? ? phone:phone
? ? ? },
? ? ? success:res=>{
? ? ? ? if(res.data.code==200){
? ? ? ? ? wx.showToast({
? ? ? ? ? ? title: '驗(yàn)證碼已發(fā)送.請注意接收',
? ? ? ? ? ? icon:"success"
? ? ? ? ? }) ?
? ? ? ?
? ? ? ? ? var timers=setInterval(function () {
? ? ? ? ? ? time--;
? ? ? ? ? ? if (time>0){
? ? ? ? ? ? ? that.setData({
? ? ? ? ? ? ? ? codebtn:time,
? ? ? ? ? ? ? ? disabled:true
? ? ? ? ? ? ? });
? ? ? ? ? ? }else{
? ? ? ? ? ? ? that.setData({
? ? ? ? ? ? ? ? codebtn:'發(fā)送驗(yàn)證碼',
? ? ? ? ? ? ? ? disabled:false
? ? ? ? ? ? ? });
? ? ? ? ? ? ? clearInterval(timers)
? ? ? ? ? ? }
? ? ? ? ? },1000)
? ? ? ? }else{
? ? ? ? ? wx.showToast({
? ? ? ? ? ? title: res.data.msg,
? ? ? ? ? ? icon:"none",
? ? ? ? ? ? duration:2000
? ? ? ? ? })
? ? ? ? }
? ? ? ? this.setData({
? ? ? ? ? code:res.data.data,
? ? ? ??
? ? ? ? })
? ? ? }
? ? })?
? ?
? },
? // 登錄處理
? login(e){
? ? var phone=this.data.phone
? ? var code=this.data.code
? ? ?wx.request({
? ? ? ?url: 'http://www.easyadmin.com/api/loginDo',
? ? ? ?method:'POST',
? ? ? ?data:{
? ? ? ? ?phone,
? ? ? ? ?code
? ? ? ?},
? ? ? ?success:res=>{
? ? ? ? ?if(res.data.code==200){
? ? ? ? ? ? wx.redirectTo({
? ? ? ? ? ? ? url: '/pages/my/my',
? ? ? ? ? ? })
? ? ? ? ?}
? ? ? ? ?console.log(res.data)
? ? ? ?}
? ? ?})
? },
?
??
})wxss頁面:
/* pages/phone/phone.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;
?}后端php接口:這里我用的是短信寶的平臺(tái)
public function phone(Request ?$request)
? ? {
? ? ? ? $data=$request->get('phone');
? ? ? ? $statusStr = array(
? ? ? ? ? ? "0" => "短信發(fā)送成功",
? ? ? ? ? ? "-1" => "參數(shù)不全",
? ? ? ? ? ? "-2" => "服務(wù)器空間不支持,請確認(rèn)支持curl或者fsocket,聯(lián)系您的空間商解決或者更換空間!",
? ? ? ? ? ? "30" => "密碼錯(cuò)誤",
? ? ? ? ? ? "40" => "賬號(hào)不存在",
? ? ? ? ? ? "41" => "余額不足",
? ? ? ? ? ? "42" => "帳戶已過期",
? ? ? ? ? ? "43" => "IP地址限制",
? ? ? ? ? ? "50" => "內(nèi)容含有敏感詞"
? ? ? ? );
? ? ? ? $yzm=rand(1111,9999);
? ? ? ? $smsapi = "http://api.smsbao.com/";
? ? ? ? $user = "賬號(hào)"; //短信平臺(tái)帳號(hào)
? ? ? ? $pass = md5("密碼"); //短信平臺(tái)密碼
? ? ? ? $content="您的驗(yàn)證碼是$yzm,請不要告訴任何人";//要發(fā)送的短信內(nèi)容
// ? ? ? ?$phone = $data;//要發(fā)送短信的手機(jī)號(hào)碼
// ? ? ? ?$sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
// ? ? ? ?$result =file_get_contents($sendurl) ;
// ? ? ? ?echo $statusStr[$result];
? ? ? ? $code=Cache::set($data,$yzm);
? ? ? ? return json(['code'=>'200','data'=>$yzm,'msg'=>'短信發(fā)送成功']);
? ? }public function loginDo()
? ? {
? ? ? ? $data=\request()->post();
? ? ? ? $code=Cache::get($data['phone']);
?
? ? ? ? if($code!==$data['code']){
? ? ? ? ? ? return json(['code'=>'400','data'=>'','msg'=>'短信驗(yàn)證碼錯(cuò)誤']);
? ? ? ? }
? ? ? ? $res=User::where('phone',$data['phone'])->find();
? ? ? ? if (empty($res)){
? ? ? ? ? ? $user = User::create([
? ? ? ? ? ? ? ? 'phone'=>$data['phone']
? ? ? ? ? ? ]);
? ? ? ? ? ? return json(['code'=>'200','注冊成功','data'=>$user]);
? ? ? ? }else{
? ? ? ? ? ? $user=User::where('phone',$data['phone'])->find();
? ? ? ? ? ? return json(['code'=>'300','登錄成功','data'=>$user]);
? ? ? ? }
?
? ? }這樣一個(gè)短信驗(yàn)證碼功能就完成啦。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
kindeditor編輯器點(diǎn)中圖片滾動(dòng)條往上頂?shù)腷ug
這篇文章主要介紹了kindeditor編輯器點(diǎn)中圖片滾動(dòng)條往上頂?shù)腷ug的相關(guān)資料,需要的朋友可以參考下2015-07-07
yolov5項(xiàng)目部署+微信小程序前端展示的全過程
YOLOV5模型從發(fā)布到現(xiàn)在都是炙手可熱的目標(biāo)檢測模型,被廣泛運(yùn)用于各大場景之中,下面這篇文章主要給大家介紹了關(guān)于yolov5項(xiàng)目部署+微信小程序前端展示的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
分享12個(gè)Webpack中常用的Loader(小結(jié))
這篇文章主要介紹了分享12個(gè)Webpack中常用的Loader(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
javascript移動(dòng)設(shè)備Web開發(fā)中對touch事件的封裝實(shí)例
這篇文章主要介紹了javascript移動(dòng)設(shè)備Web開發(fā)中對touch事件的封裝實(shí)例,分別對tap事件、doubleTap事件、longTap事件、swipe事件做了封裝,需要的朋友可以參考下2014-06-06
js 數(shù)值項(xiàng)目的格式化函數(shù)代碼
數(shù)值項(xiàng)目的格式化函數(shù)代碼,需要的朋友可以參考下。2010-05-05
經(jīng)典面試題之JavaScript?for循環(huán)(var?let)
如果你也在面試找工作,那么也一定遇到過這道for循環(huán)打印結(jié)果的題,下面我們來探討下,對經(jīng)典面試題之js?for循環(huán)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2023-10-10

