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. Ubuntu下通过apache建立虚拟主机

    一个搞前端交互的,总会遇到这样那样的,不需要写代码去解决的问题,怎么搞?答:只能去大海里捞,问题很明确但答案不一定靠谱,因为回答的人不用去考虑你是否会给自己系统搞崩溃. 那么我只能把自己经过验证的答案 ...

  2. IIC通信协议详解

    IIC通信详解 IIC概述 IIC:两线式串行总线,它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据. 在CPU与被控IC之间.IC与IC之间进行双向传送,高速IIC总线一般可达400 ...

  3. Python numpy插入、读取至postgreSQL数据库中bytea类型字段

    安装psycopg2模块,此模块用于连接PostgreSQL数据库 ​pip install psycopg2 # -*- coding: utf-8 -*- import psycopg2 impo ...

  4. bak文件恢复成 SQL2005 数据库 的全程讲解

    经常会碰到客户给我们发的是一个bak的数据库备份文件,而不是一个数据库.这就需要我们把这数据文件还原成数据库的形式. 如将demo.bak数据库恢复到mssql2005下 打开SQL2005,打开后就 ...

  5. IsDate(expression)函数

    IsDate 函数 返回 Boolean 值指明某表达式是否可以转换为日期. IsDate(expression) expression 参数可以是任意可被识别为日期和时间的日期表达式或字符串表达式. ...

  6. 03python面向对象编程4

    http://c.biancheng.net/view/2287.html 1.1定义类和对象 在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,insta ...

  7. bzoj3631: [JLOI2014]松鼠的新家(树上差分)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3631 题目大意:给定含有n个顶点的树,给定走遍整棵树顺序的序列a[1],a[2],a[3 ...

  8. Django【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

    django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); ...

  9. TodoList案例

    我们今天模仿ToDoList进行一个简单的增,删,改,查的操作 可参考官网  http://www.todolist.cn/ 下边直接上代码 import React from 'react'; cl ...

  10. 大数据学习笔记之初识Hadoop

    1.Hadoop概述 1.1 Hadoop名字的由来 Hadoop项目作者的孩子给一个棕黄色的大象样子的填充玩具的命名 Hadoop的官网:http://hadoop.apache.org . 1.2 ...