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实现步骤九(登录验证码,退出-登录标记)的更多相关文章

  1. PHP 用户登录与退出

    PHP 用户登录与退出 登录页面 login.html 负责收集用户填写的登录信息. <fieldset> <legend>用户登录</legend> <fo ...

  2. 【招聘App】—— React/Nodejs/MongoDB全栈项目:个人中心&退出登录

    前言:最近在学习Redux+react+Router+Nodejs全栈开发高级课程,这里对实践过程作个记录,方便自己和大家翻阅.最终成果github地址:https://github.com/66We ...

  3. 清除@SessionAttributes 网站实现退出登录

    在网站实现登录时,我认识了@SessionAttributes,对我来说是真的好用,@SessionAttributes注解可以使得模型中的数据存储一份到session域中. 这样在页面跳转时可以直接 ...

  4. Python+fiddler(基于Cookie绕过验证码自动登录)

    案例:使用Cookie绕过百度验证码自动登录账户 步骤: 1.浏览器进入百度首页,点击登录按钮,输入相关信息(注意:暂时不要点击登录按钮) 2.进入fiddler,首先获取证书,Tools--> ...

  5. 织梦DedeCMS会员登录或退出后如何直接跳转到首页

    织梦dedecms默认情况下的会员登录后会直接跳转到会员中心,退出也是一样,但是如果我们想让会员登录后直接跳转到首页,那该如何实现呢? 经过我们的研究,已经找到解决办法,下面是详细的修改步骤: 首先在 ...

  6. Java中SSM+Shiro系统登录验证码的实现方法

    1.验证码生成类: import java.util.Random; import java.awt.image.BufferedImage; import java.awt.Graphics; im ...

  7. spring boot:spring security给用户登录增加自动登录及图形验证码功能(spring boot 2.3.1)

    一,图形验证码的用途? 1,什么是图形验证码? 验证码(CAPTCHA)是"Completely Automated Public Turing test to tell Computers ...

  8. Vue Springboot (包括后端解决跨域)实现登录验证码功能详细完整版

    利用Hutool 基于Vue.ElementUI.Springboot (跨域)实现登录验证码功能 前言 一.Hutool是什么? 二.下面开始步入正题:使用步骤 1.先引入Hutool依赖 2.控制 ...

  9. SpringBoot开发十-开发登录,退出功能

    需求介绍-开发登录,退出功能 访问登录页面:点击头部区域的链接打开登录页面 登录: 验证账号,密码,验证码 成功时生成登录凭证发放给客户端,失败时跳转回登录页面 退出: 将登录状态修改为失效的状态 跳 ...

随机推荐

  1. hibernate之一对多关系

    1. 什么是关联(association) 1.1 关联指的是类之间的引用关系.如果类A与类B关联,那么被引用的类B将被定义为类A的属性.例如: public class A{ private B b ...

  2. 有效的minidump(一)

    简介 在过去的几年中,崩溃转储成为我们调试活动的一个重要部分.当我们的软件在客户的机器出现故障时,创建应用程序状态的快照并使用在开发人员机器上运行的传统调试器对其进行分析的可能性是非常宝贵的.第一代崩 ...

  3. python(二)——if条件语句与基本数据类型

    if语句 缩进要保持一致 if 1 == 1: print('hello') if 2 == 2: print('world') else: print('python') elif inp = in ...

  4. pip包管理工具 基本使用

    # 简介 pip是一款包管理工具, 和apt, yum, brew功能类似 # 安装 wget --no-check-certificate https://bootstrap.pypa.io/get ...

  5. P5589 【小猪佩奇玩游戏】

    这题还是比较妙妙套路的,复杂度为\(O(log^2N)\),可以卡掉\(\sqrt n\)的做法 首先我们可以把原数列分成很多个集合,集合之间肯定是两两独立的,考虑分别计算答案 我们定义\(f_i\) ...

  6. 【luoguP2999】 [USACO10NOV]巧克力牛奶Chocolate Milk

    题目链接 考虑每条路径都经过的一个点,它可以到达每个出度为零点(终点),且每个入读为零点(起点)都能到达它, 拓扑排序记录下每个结点能到达的出度为零点的个数和沿反边能到达的入读为零点个数,判断是否等于 ...

  7. GoCN每日新闻(2019-10-25)

    GoCN每日新闻(2019-10-25) GoCN每日新闻(2019-10-25) 1. [译]Golang应付百万级请求/分钟 https://juejin.im/post/5db1464b6fb9 ...

  8. 第12组 Beta冲刺(4/5)

    Header 队名:To Be Done 组长博客 作业博客 团队项目进行情况 燃尽图(组内共享) 展示Git当日代码/文档签入记录(组内共享) 注: 由于GitHub的免费范围内对多人开发存在较多限 ...

  9. fluent加载第三方(C++,Fortan等)动态链接库

    这里我介绍一种比较简单的方法,首先我们从ANSYS Fluent UDF Manual上随便找一段正确的UDF,下面这段UDF取自ANSYS 18的ANSYS Fluent UDF Manual,位于 ...

  10. 【转】URL短地址压缩算法 微博短地址原理解析 (Java实现)

    转自: URL短地址压缩算法 微博短地址原理解析 (Java实现) 最近,项目中需要用到短网址(ShortUrl)的算法,于是在网上搜索一番,发现有C#的算法,有.Net的算法,有PHP的算法,就是没 ...