1.目的:
采用phpGrace中的图片验证码,在用户名+密码登录时使用图片验证码进行验证。
2.文档地址:
图片验证码的文档地址:http://www.phpgrace.com/tools/info/5.html
3.代码文件放置:
将下载verifyCode.php的文件,放入grace/tools文件夹中即可,该文件主要是产生图片验证码,并且写入到session中。
4.访问地址方法:
将客户端访问的方法放在app/index控制器中,代码如下:
//绘制验证码
public function vcode(){ //绘制验证码
/*
* verifyCode 参数
* 1、图片宽度
* 2、图片高度
* 3、字符总数
* 4、包含数字的数量
* 5、字体【可省参数 默认:AMBROSIA.ttf,如需更换请将字体文件部署到 phpGrace/fonts 文件夹下】
*/
$vcode = new phpGrace\tools\verifyCode(88, 32, 4, 1);
/*
* 可修改属性
$vcode->bgcolor = array(255, 0, 0); //验证码背景颜色
$vcode->codeColor = array(0, 255, 0); //验证码文本颜色
$vcode->fontSize = 30; //验证码文字大小
$vcode->noise = false; //是否绘制干扰字符
$vcode->noiseNumber = 10; //干扰字符数量
$vcode->sessionName = 'yourname'; //保存验证码的 session 名称
*/
//绘制验证码
$vcode->draw();
}
      该代码放入后,客户端访问该地址为:  http:// 域名或IP地址 /index/vcode   ,通过该地址,可得到图片验证码。
5.视图:
在uniApp中添加验证码输入和显示功能。由于uniApp是基于Vue的视图架构,所以该代码如下:
<view >
<text >验证码:</text>
<input type="text" v-model="yzm" placeholder="请输入验证码"/>
<img v-bind:src="yzmimg" @tap="changeVcode" /><br />
</view>

网站的源程序是基于HTML的,代码如下:

<form action="" method="post">
验证码 : <br />
<input type="text" name="yzm" /><img src="/index/vcode" onclick="changeVcode(this);" /><br />
<input type="submit" id="" value="提交" />
</form>

在Vue中要注意的事数值的绑定,用“yzm”绑定输入的验证码,用yzmimg绑定图片的连接地址。

         同时这里的点击也和js代码有所区别。Vue中的事件,需要写在methods代码块中。
  所以这里的代码综合如下:
  data模块中:

data() {
return {
yzm: '',
yzmimg:this.apiServer+'index/vcode/',
}
},

methods:

methods: {
changeVcode(){
this.yzmimg =this.apiServer+'index/vcode/' + Math.random();
},
6.服务器端验证:
    注意:在客户端发送验证码到后台后,后台在验证时,需要打开Session才行,即增加如下语句:session_start();    如果不加该语句,将会使得服务器端在下面代码验证时无法获取session中的值。
function checkYZM(){
//在验证时,需要加入session_start开启session,否则拿不到session值!!!
session_start(); //必须要加该语句,phpgrace的说明中没写,导致验证失败。
//提交比对
if(PG_POST){
//比对验证码
if($_POST['yzm'] != getSession('pgVcode')){
exit(jsonCode('vcodeerror', '验证码错误!'));
}
// else{
// exit(jsonCode('ok', '验证码正确!'));
// }
}
};
7.客户端反馈结果:
   客户端部分代码如下:
success:res=>{
var info = res.data;
//首先进行验证码的验证
if(info.status=='vcodeerror'){
uni.showToast({
title:'验证码错误,请重试!',
icon:'none',
})
return;
}
}
总结:
本次基于phpGrace的后台框架,添加了官方提供的图形验证码代码。由于需要将其迁移到基于Vue的视图框架中,又是第一次写这样的代码,花了近一天的时间才完全的搞定,走了不少弯路,在这里写出来,也给要用的朋友一点参考或建议。
 
 
 
   

【原创】基于phpGrace+uniApp开发之:5.登录界面增加图片验证码的更多相关文章

  1. 以java实现的一个简单登录界面(带验证码)

    本文参考于:https://blog.csdn.net/wyf2017/article/details/78831744 https://blog.csdn.net/MengKun822/articl ...

  2. django项目登录中使用图片验证码

    应用下创建untils文件夹放置封装图片验证码的函数 创建validCode.py文件定义验证码规则 import random def get_random_color(): return (ran ...

  3. laraval开发之QQ登录及QQ报错

    1.composer安装依赖 2.在config/app.php中注册providers并添加Socialite门面 3.在app/Providers/EventServiceProcider.php ...

  4. android开发之-Android 开发之4.0界面设计原则-整理

    设计原则: 一.让人着迷: 1.给人惊喜:使用漂亮的界面.精心的动画.适时的音乐. 2.真实的对象比按钮和菜单更有趣   这句话的意思是:使用描述描述性的图标作为快捷方式,界面美观   当然这个快捷方 ...

  5. 安卓开发之cache 的使用(图片查看器案例)

    package com.lidaochen.test; import android.graphics.Bitmap; import android.graphics.BitmapFactory; i ...

  6. Django登录(含随机生成图片验证码)注册实例

    登录,生成随机图片验证码 一.登录 - 随机生成图片验证码 1.随机生成验证码 Python随机生成图片验证码,需要使用PIL模块,安装方式如下: pip3 install pillow 1)创建图片 ...

  7. 解决Iframe session过期,登录界面无法全页刷新

    在登录界面增加如下js代码: <script language=”JavaScript”> if (window != top) top.location.href = location. ...

  8. 基于xmpp openfire smack开发之Android客户端开发[3]

    在上两篇文章中,我们依次介绍openfire部署以及smack常用API的使用,这一节中我们着力介绍如何基于asmack开发一个Android的客户端,本篇的重点在实践,讲解和原理环节,大家可以参考前 ...

  9. 基于msm8909高通平台Android驱动开发之hello程序

    本文转载自:http://www.itwendao.com/article/detail/227839.html Android驱动开发之Hello实例:   驱动部分 modified:   ker ...

随机推荐

  1. sass和less的对比

    );  <  { ;  {   {     ; } ); } ); } );  // if 条件  @dr: if(@my-option = true, {     button {       ...

  2. [IIS]修改MaxFieldLength与MaxRequestBytes彻底解决Request Too Long的问题

    当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of ...

  3. git上传代码到code.csdn.net出错

    用git push代码到csdn code的时候出现错误 error:failed to push some refs to - Dealing with "non-fast-forward ...

  4. Spring基础18——通过注解配置bean之间的关联关系

    1.组件装配 <context:component-scan>元素还会自动注册AutowiredAnnotaionBeanPostProcessor实例,这是一个bean的后置处理器,该实 ...

  5. ZX树初步

    一些数据结构,比如线段树或平衡树,他们一般是要么维护每个元素在原序列中的排列顺序,要么是维护每个元素的大小顺序,若是像二者兼得那么就想想主席树. 给你多个不同的数字问你1-N第K大的数是多少 最简单的 ...

  6. 1130. Infix Expression (25)

    Given a syntax tree (binary), you are supposed to output the corresponding infix expression, with pa ...

  7. Git工程开发实践(四)——Git分支管理策略

    A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...

  8. LAMP架构编译安装过程详解

    linux Git 安装 1.安装git依赖包 . yum install -y perl-ExtUtils-MakeMaker package . yum install -y tcl build- ...

  9. pymongo操作mongo数据库的查操作

    一:  数据结构 { "_id" : ObjectId("5de8a5b748a75a8d48b72bdc"), ", ", ", ...

  10. LTE系统时延及降低空口时延的4种方案

    转载:https://rf.eefocus.com/article/id-LTE%20delay 对于移动通信业务而言,最重要的时延是端到端时延, 即对于已经建立连接的收发两端,数据包从发送端产生,到 ...