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

boyanx1天前技术教程2

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

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.最后呈现的登录效果:

相关文章

高可用聊天系统设计方案(Hyperf实现)

一、系统架构设计1. 分层架构图 客户端 ↑↓ HTTP/WS API网关层(Nginx + Keepalived) ↑↓ RPC 业务服务集群 ↑↓ 数据层(MySQL Clus...

制作简易页面计算器的详细教程和代码分享

今天教大家一个比较简单实用的Web小应用:简单计算器。这个案例比较简单、比较直观,适合小孩或者初学编程者进行编程入门的练习。用html进行入门编程练习优点非常多:IDE框架比较轻,VSCode安装方便...

从零开始打造 —— 用 HTML5 打造安全实用的滚动字幕工具

朋友所在工厂配备有一处大屏,大屏旁设有一台触摸屏电脑,该电脑日常主要用于投放系统大屏看板。今日,工厂领导有投放滚动字幕的需求,要求他寻找一款滚动字幕软件。朋友随即在网络上展开各种搜索。然而搜索到的软件...

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

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

在 .NET Core 中使用 SignalR 实现实时通信应用程序

概述:在现代 Web 开发环境中,对实时功能的需求越来越大。无论是实时聊天、实时通知还是动态仪表板,用户都希望获得即时更新。SignalR 是一个用于 ASP.NET 的库,可简化向应用程序添加实时...

又一个布局利器,CSS 伪类 :placeholder-shown

一般我们常见placeholder伪类选择器用来修改默认样式及文案,忽然发现placeholder-shown伪类选择器,比较官方的解释是CSS伪类表示任何显示占位符文本的form元素。简单来说就是当...

发表评论    

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