阿东编程系列:APP使用用户名、密码和图片验证码进行登录

boyanx4个月前技术教程19

本期内容登录过程较为常见和简单,不再以视频的方式呈现(如果确实有需要,小伙伴可以发私信告知,到时候再录制视频)。这里给大家贴出代码和图片,方便小伙伴们去完成。

1.APP端基于uni-app的登录页代码(部分):

  • 页面结构代码
<view class="load-main">
        <view class="load-box">
            <view class="load-text">
                登录
            </view>
            <view class="load-input">
                <input class="inputtext" type="text" placeholder-class="load-place" placeholder="请输入账号" v-model="username"/>
            </view>
            <view class="load-input">
                <input class="inputtext" type="text" password placeholder-class="load-place" placeholder="请输入密码" v-model="password"/>
            </view>
            
            <view class="load-input">
                <view class="load-inputview">
                    <input type="text" class="load-vcodeinput" placeholder-class="load-place" placeholder="请输入验证码" v-model="vcode">
                </view>
                <view class="load-vcode">
                    <image class="load-vcodeimg" v-bind:src="vcodesrc" @tap="getvcode" ></image>
                </view>
            </view>
                
            <view class="load-button">
                <button class="load-button-style" type="warn" @tap="checklogin">登录</button>
            </view>
        </view>
    </view>
  • 页面登录代码
uni.request({
                        console.log(res);
                        if(res.data.errorCode ==0){
                            uni.showToast({
                                title: '登录成功',
                                icon:'success'
                            });
                            //跳转到每周计划界面,适合tabBar中的页面
                            uni.switchTab({
                                url: '/pages/plan/plan'
                            });
                        }
                        else{
                            uni.showToast({
                                title: '用户名或密码错误',
                                icon:'none'
                            });
                        }
                    
})

2.创建User控制器,并且添加两个方法,分别为:

  • createVcode:用于生成图片验证码,之前视频已经介绍过
public function createVcode()
    {
        return Captcha::create();
    }
  • userNameLogin:用户名登录方法
public function userNameLogin()
    {
        //第一步是验证数据的完整性,包括用户名,密码,图片验证码格式
        (new UserValidate())->gocheck('userlogin');

        //第二部是在User模型中使用用户名和密码进行登录
        $res = (new UserModel())->nameLogin();
        return $res;
    }

3.在路由中添加createVcode路由和userNameLogin路由,如下:

Route::group(':version',function(){
    Route::get('test/index',':version.test/index');
    Route::get('user/createvcode',':version.user/createvcode');
    Route::post('user/usernamelogin',':version.user/usernamelogin');
});

这里需要注意的是:一般用户名和密码登录,我们使用post方法进行数据的发送;

4.创建User数据模型,并且创建nameLogin方法,在控制器进行调用该方法。这个方法主要是实现对数据表的绑定,并且验证图片验证码是否正确,根据用户名和密码进行查询验证,最后将正确的数据进行返回;

  • 图片验证码验证
if(!captcha_check($vcode)){
            //调用在通用函数common中的抛出异常错误
            throw_comm_exception('图片验证码错误',10011);
};
  • 用户名和密码进行查询,注意:这里用户数据作为参数进行查询:
//使用用户名和密码对数据表进行查询,采用数组方式进行多条件查询
        $arr = ['username'=>$username,
                'userpassword'=>$userpassword
        ];
        //查询
        $usr = User::where($arr)->find();
  • 将数据返回到APP端
//判断返回结果
        if($usr!=NULL){
            //返回正确的数据
            return return_json(0,'登录正常',$usr);
        }
        else{
            //抛出异常错误信息
            throw_comm_exception('用户名或密码错误',10012);
        }
  • User数据模型完整的代码如下:
<?php
declare (strict_types = 1);
namespace app\model;
use think\model;

class User extends Model
{
    protected $table = 'tblUsers';
    protected $pk ='AutoID';

    public function nameLogin()
    {
        $params=request()->param();
        $username=$params['username'];
        $userpassword = $params['userpassword'];
        $vcode = $params['vcode'];

        if(!captcha_check($vcode)){
            //调用在通用函数common中的抛出异常错误
            throw_comm_exception('图片验证码错误',10011);
           };

        //使用用户名和密码对数据表进行查询,采用数组方式进行多条件查询
        $arr = ['username'=>$username,
                'userpassword'=>$userpassword
        ];

        //查询
        $usr = User::where($arr)->find();

        //判断返回结果
        if($usr!=NULL){
            //返回正确的数据
            return return_json(0,'登录正常',$usr);
        }
        else{
            //抛出异常错误信息
            throw_comm_exception('用户名或密码错误',10012);
        }
    }
}

4.最后呈现的登录效果:

相关文章

使用uniapp开发小程序遇到的一些问题及解决方法

1、swiper组件自定义知识点swiper组件的指示点默认是圆圈,想要自己设置指示点,需要获得当前索引,然后赋给当前索引不同的样式,然后在做个动画就可以了。*关键点用change方法,然后通过e.d...

Lit简介:基于标准的反应库(反应标准的标杆是)

  Lit基于Mozilla的Web组件标准,以提供简单、合规的反应前端。在一个技术替代品庞大的世界里,它可能会提供一条明确的前进道路。  在用于被动编程的前端JavaScript框架中,Lit是一个...

手机网站常见问题总结(手机网站访问异常怎么解决)

一、h5网站input 设置为type=number的问题h5网页input 的type设置为number一般会产生三个问题,一个问题是maxlength属性不好用了。另外一个是form提交的时候,默...

为什么不该使用占位文本(placeholder)作为提示文本的14个理由

转载说明:原创不易,未经授权,谢绝任何形式的转载占位符属性通常用于在文本输入框中添加提示文本,或作为适当标签的替代。当用户输入时,占位文本会消失以腾出空间供回答。这种方法很受欢迎,因为它节省空间并具有...

关于 v-model 你需要知道的这一切

本文已经过原作者 ichael Thiessen 授权翻译。Vue v-model是一个指令,它提供了input和form之间或两个组件之间的双向数据绑定。这是Vue开发中的一个简单概念,但v-mod...

消防安全知识答题活动小程序v4.1.0

消防安全知识答题活动小程序v4.1.0v4.1.01)支持多选题.wxml<checkbox-group class="checkbox-group" bindchange=&#...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。