PHP验证码[,PHP检验码][,PHP校验码][,PHP生成验证码][,PHP获取验证码]

前言

最近分析ThinkPHP开源框架源码,下面给大家带来分享一段来着其内部的验证码生成与应用的解析,也算是一种自我总结吧。耐心阅读博文您可以获得如下【3本经验书】以及一份【验证码Demo实例】

1.为什么需要验证码

2.验证码是如何生成的

3.在项目里,验证码是如何工作的

Demo地址:https://pan.baidu.com/s/1o7H3xzG    密码:gtbc

为什么需要验证码

现在很多应用或者网址登录注册时都加入了验证码这一环节的检验。如手机,图片,操作等验证码,如下图:

图片验证码:

162824_xBvP_2484485.png

手机验证码:

163119_WMRg_2484485.png

 

操作验证码:

162946_Otaf_2484485.png

虽然它们的获取方式各自不同但宗旨还是一样,就是防止机器恶意注册登录。

 

验证码是如何生成的

第一步:二话不说直接下载DEMO运行

https://pan.baidu.com/s/1o7H3xzG    密码:gtbc

 

第二步:

执行运行后生成验证码如下图范例效果:

224915_DSqW_2484485.png

DEMO的访问URL地址以及验证码图中都有了,点击验证码图片可以随意切换验证码

 

第三步:

第二步如果顺利的话就可以看到上图中的验证码了,那么它是如何生成的呢?

关于生成的代码这里就不贴出来了,DEMO中本人已注释明确。代码已经过测试,逻辑方面已无问题如果执行报错可能就是环境的问题。比如你的PHP没开启相关图像操作的扩展。毕竟验证码是生成过程中调用的是PHP图片操作的扩展

 

在项目里,验证码是如何工作的

如果第二步你顺利通过了,那么恭喜你说明你的环境也没问题。接下来就给大家简单的剖析验证码在项目中的应用过程

第一步:在验证码生成的时候,把生存出来的验证码进行加密,最后以加密密钥与自定义id组合为SESSION键存入SESSION中。代码见下图(该段代码出处是DEMO中的Verify.php文件中的170行-177行)

230750_k6Hr_2484485.png

 

第二步:第一步完成之后我们的页面就展示出了一个验证码了。其实这个时候系统的session中已经保存了验证码的加密Code。当用户输入验证码后并点击登录。验证码的明文就会传到后端,后端接受到验证码并已相同的加密方式加密然后与SESSION中的验证码对比,如果正确则返回true。代码见下图(该段代码出处是DEMO中的Verify.php文件中的77行-97行)

232522_isbM_2484485.png

 

结束语

到这里就大致的勾勒了一下关于验证码的生成和使用方法了。本文阐述的内容比较简单,Demo的例子可以直接快速应用在现实的项目中。如果想深入学习该类的设计思想就自行阅读DEMO代码,毕竟设计思想才是精髓所在。希望本文对同胞们有所帮助,谢谢大家~

转载于:https://my.oschina.net/u/2484485/blog/843171

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值