php_mvc实现步骤九(登录验证码,退出-登录标记)
shop34-17-登录验证码
验证码的分析
登录:防止暴力破解
论坛:防止灌水水
展示类:被抓取。

需要技术:
图片处理技术。
会话session技术。
PHP图片处理技术 – GD
具体操作步骤
开启GD扩展

Apache restart
场景:
制作500×300的绿色图片
创建画布
画布,一种资源型数据。可以操作的图像资源。
创建新画布(新建)
ImageCreate(宽,高),创建基于调色板的画布。
imageCreateTrueColor(宽,高);创建真彩色的画布。
基于图片创建画布(打开)
imageCreateFromJPEG(图片地址);
imageCreateFromPNG(图片地址);
imageCreateFromGIF(图片地址);

操作画布
分配颜色:如果需要在画布上使用某个颜色,应该先将颜色分配到画布上。
使用函数:
颜色标识 = imageColorAllocate(画布,R,G,B);
颜色的表示方式:
RGB

填充画布:将填充点,连续并且颜色相同的点进行填充(替换)
使用函数:
imageFill(画布, 填充位置x, 填充位置Y,颜色标识)完成
位置采用坐标进行管理:
原点:0,0,画布的左上角。
向右,x轴增加,向下Y轴增加。
右下角坐标:width-1,height-1

输出画布
将画布中处理好的图样信息,输出出来。
典型的:
1输出到图片文件。
2直接输出。
使用函数:
imagePNG(画布[, 文件地址]):
imageJPEG();
imageGIF();
如果没有第二个参数,表示直接输出。


如果直接输出到浏览器,需要告知浏览器,响应数据的类型应该是PNG格式的图片:
使用指令Content-type
tip:一个画布可以输出多次,输出为各种格式!
销毁画布资源
imageDestroy();

项目中实现验证码
验证码工具类
Framework/tool/Captcha.class.php

自动加载:

生成验证码图片:

Session开启重复避免:

背景图位置:


登录表单时展示
在登录表单页面,通过IMG标签,请求生成图片的URL地址,展示图片。
<img src=”URL” />

增加一个动作,用于完成生成后台登录界面的验证码图片:
Back/AdminController->captchaAction();

页面的img标签的src属性,请求该动作:

Tip:如果图片显示失败,如何调试?
应该直接请求生成图片的地址,而不是在img标签中查看。
我的程序,应该将captchaAction()也列为登入认证例外:
后台的平台控制器:

结果:

点击更换:
通过点击事件,对生产验证码图片的地址重新请求,形成新的验证码,进行展示!
如果img标签的src属性被更改,则浏览器会对新的url进行请求,展示在img图片区域内。

验证管理员信息前验证
在验证管理员信息的合法性前,对验证码作出验证:
Back/AdminController->checkAction();
增加验证码工具类Captcha的方法
checkCaptcha()

Back/AdminController->checkAction();
利用上面的方法完成验证:

tip:图片程序错误解析
step1: 请求生成图片的URL
语法错误:

逻辑错误:

此时,如果出现语法错误,页面会有相应的提示。
但是没有语法错误,就如上面的结果,提示图片内部错误无法显示:
Step2:将header(‘Content-Type:image/jpeg’)注释


解决即可!
图片不能展示的原因:额外输出

BOM:utf-8编码文件的签名,三个字节的隐藏字符。也是输出的!
shop34-18-退出-登录标志
退出
销毁登录标志,
Session中存储的is_login
控制器-动作

修改top模板,请求到退出动作:

登录标志
通常还具有存储当前登录用户(管理员)信息的功能!
在 存储登录标志时,获取当前管理员信息,存储到session中:
Back/AdminController->checkAction();

需要back/AdminModel->check()方法,返回的为管理员信息(合法情况下):

在back/PlatformController->_checkLogin()中验证管理员是否登录时,使用admin下标:

退出时,销毁的也是该标志:
Back/AdminController->logoutAction();

页面上可以获取管理员信息:
Back/top.html中,显示:你好 管理员!

php_mvc实现步骤九(登录验证码,退出-登录标记)的更多相关文章
- PHP 用户登录与退出
PHP 用户登录与退出 登录页面 login.html 负责收集用户填写的登录信息. <fieldset> <legend>用户登录</legend> <fo ...
- 【招聘App】—— React/Nodejs/MongoDB全栈项目:个人中心&退出登录
前言:最近在学习Redux+react+Router+Nodejs全栈开发高级课程,这里对实践过程作个记录,方便自己和大家翻阅.最终成果github地址:https://github.com/66We ...
- 清除@SessionAttributes 网站实现退出登录
在网站实现登录时,我认识了@SessionAttributes,对我来说是真的好用,@SessionAttributes注解可以使得模型中的数据存储一份到session域中. 这样在页面跳转时可以直接 ...
- Python+fiddler(基于Cookie绕过验证码自动登录)
案例:使用Cookie绕过百度验证码自动登录账户 步骤: 1.浏览器进入百度首页,点击登录按钮,输入相关信息(注意:暂时不要点击登录按钮) 2.进入fiddler,首先获取证书,Tools--> ...
- 织梦DedeCMS会员登录或退出后如何直接跳转到首页
织梦dedecms默认情况下的会员登录后会直接跳转到会员中心,退出也是一样,但是如果我们想让会员登录后直接跳转到首页,那该如何实现呢? 经过我们的研究,已经找到解决办法,下面是详细的修改步骤: 首先在 ...
- Java中SSM+Shiro系统登录验证码的实现方法
1.验证码生成类: import java.util.Random; import java.awt.image.BufferedImage; import java.awt.Graphics; im ...
- spring boot:spring security给用户登录增加自动登录及图形验证码功能(spring boot 2.3.1)
一,图形验证码的用途? 1,什么是图形验证码? 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers ...
- Vue Springboot (包括后端解决跨域)实现登录验证码功能详细完整版
利用Hutool 基于Vue.ElementUI.Springboot (跨域)实现登录验证码功能 前言 一.Hutool是什么? 二.下面开始步入正题:使用步骤 1.先引入Hutool依赖 2.控制 ...
- SpringBoot开发十-开发登录,退出功能
需求介绍-开发登录,退出功能 访问登录页面:点击头部区域的链接打开登录页面 登录: 验证账号,密码,验证码 成功时生成登录凭证发放给客户端,失败时跳转回登录页面 退出: 将登录状态修改为失效的状态 跳 ...
随机推荐
- dimensionality reduction动机---data compression(使算法提速)
data compression可以使数据占用更少的空间,并且能使算法提速 什么是dimensionality reduction(维数约简) 例1:比如说我们有一些数据,它有很多很多的feat ...
- 【Selenium-WebDriver实战篇】ScreenRecorder的实际输出路径设置(转)
参考:https://www.cnblogs.com/yongfeiuall/p/4134139.html 我们可以用以下方式在Selenium Webdriver中capture video. 基本 ...
- Vue --- 基础指令
目录 表单指令 条件指令 循环指令 分隔符(了解) 过滤器 计算属性 监听属性 冒泡排序 表单指令 使用方法: v-model 数据双向绑定 v-model绑定的变量可以影响表单标签的值,反过来表单标 ...
- 51nod1423 最大二“货”
[传送门] 单调栈其实就是个后缀$max/min$,这道题可以维护一个单调递减的单调栈,pop元素的时候,能pop掉的元素就是第二大,当前元素为第一大.遇到第一个不能pop掉的时候当前元素就是第二大, ...
- js实现文字上下滚动效果
大家都知道,做html页面时,为了提升网页的用户体验,我们需要在网页中加入一些特效,比如单行区域文字上下滚动就是经常用到的特效.如下图示效果: <html> <head> &l ...
- 002_Visual Studio (gnuplot)显示数组波形
视频教程:https://v.qq.com/x/page/e3039v4j6zs.html 资料下载:https://download.csdn.net/download/xiaoguoge11/12 ...
- MongoDB 红宝书-MongoDB官网使用指南
本文转载自Mongodb中文社区:http://www.mongoing.com/archives/27359 无论你是MongoDB的使用者.爱好者.初学者还是路人甲,有一个学习与进修的资源宝藏是千 ...
- learning java Encoder and Decoder
import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.CharacterCodingExcep ...
- 21-ESP8266 SDK开发基础入门篇--C# TCP客户端 , 控制LED亮灭
https://www.cnblogs.com/yangfengwu/p/11192603.html 由于是台式机,,没有插无线网卡...所以呢我就用调试助手监控下数据 后期让WIFI连接路由器的时候 ...
- 洛谷 P4316绿豆蛙的归宿
题目描述 记f[i]表示经过i号点的概率. 那么点v从点u到达的概率=经过点u的概率/点u的出度.由于v可以由多个点走到,所以f[v]+=f[u]/out[u]. 计算f的过程可以在拓扑中完成,同时可 ...