您的位置:首页 > 编程语言 > PHP开发

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

2017-02-21 00:00 405 查看

前言

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

1.为什么需要验证码

2.验证码是如何生成的

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

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

为什么需要验证码

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

图片验证码:



手机验证码:



操作验证码:



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

验证码是如何生成的

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

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

第二步:

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



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

第三步:

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

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

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

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

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



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



结束语

到这里就大致的勾勒了一下关于验证码的生成和使用方法了。本文阐述的内容比较简单,Demo的例子可以直接快速应用在现实的项目中。如果想深入学习该类的设计思想就自行阅读DEMO代码,毕竟设计思想才是精髓所在。希望本文对同胞们有所帮助,谢谢大家~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息