PHP验证码实现原理

生成随机数或者字母保存到session中(验证验证码的时候用),然后对生成的数字或者字母进行绘图!然后呈现在我们眼前

刷新验证码:用js改变验证码图片所带的参数,让浏览器不读缓存的图片,从而实现刷新验证码效果!

代码示例

$str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890";

$image=imagecreate(50,25);

imagecolorallocate($image,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125));

$color = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

for($i=1;$i<=4;$i++) {

$date=$str[mt_rand(0,strlen($str)-1)];

$code.=$date;

}

session_start();

$_SESSION['code'] = $code;

imagestring($image,4,8,4,$code,$color);

for($i=1;$i<=30;$i++) {

imagesetpixel($image,mt_rand(0,50),mt_rand(0,25),mt_rand(125,200));

}

for($i=1;$i<=mt_rand(1,5);$i++) { imageline($image,mt_rand(0,50),mt_rand(0,25),mt_rand(0,50),mt_rand(0,25),mt_rand(100,150)); } header("content-type:image/png"); imagepng($image); ?>

数字+字母验证码(各字母颜色不同):

$str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890";

$image=imagecreate(50,25);

imagecolorallocate($image,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125));

$color[0] = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

$color[1] = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

$color[2] = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

$color[3] = imagecolorallocate($image,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

for($i=0;$i<4;$i++) {

$date=$str[mt_rand(0,strlen($str)-1)];

$code.=$date;

imagestring($image,5,6+$i*10,4,$code[$i],$color[$i]);

}

session_start();

$_SESSION['code'] = $code;

for($i=1;$i<=30;$i++) {

imagesetpixel($image,mt_rand(0,50),mt_rand(0,25),mt_rand(125,200));

}

for($i=1;$i<=mt_rand(1,5);$i++) {

imageline($image,mt_rand(0,50),mt_rand(0,25),mt_rand(0,50),mt_rand(0,25),mt_rand(100,150));

}

header("content-type:image/png");

imagepng($image);

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/5006.html

微信打赏

支付宝打赏

感谢您对作者houjushang的打赏,我们会更加努力!    如果您想成为作者,请点我

php 验证码功能的实现原理,php验证码实现原理相关推荐

  1. TP5 验证码功能实现(解决点击验证码不更新的问题)

    ThinkPHP5.0 已经很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用. 功能开发 1).引入第三方扩展包 进行 TP5 的开发,Composer 的使用会成为重要技能  以win ...

  2. 【验证码功能合集】vue简单实现验证码功能,纯前端实现验证码,拿来即用【输入,滑动,拼图】

    效果图 可以让输入的验证码和图片验证码比对. 上面的是验证码的组件,直接复制贴里面就行了,然后引入到你需要的地方 很简单的两个步骤搞定 (1)验证码组件 这里是验证码的组件,啥也不用动,直接复制创建个 ...

  3. Discuz验证码功能解析

    discuz验证码功能主要在\uc_server\lib\seccode.class.php或/source/class/class_seccode.php文件中实现,这两个文件的代码基本一致,区别是 ...

  4. thinkphp实现发送手机验证码功能!

    php实现发送手机验证码功能如下: //发送手机验证码public function sendPhoneCodeMessage(){ vendor('SendPhoneCode.SendCode',' ...

  5. html验证码功能如何实现原理,基于JS实现一个随机生成验证码功能

    效果展示 实现原理 1. html:一般就是一个div: 2. JS:1)将所有的验证码所用的字符放在一个字符串中 2)在这个字符串的字符个数以内,随机生成索引号 3)根据索引号查找对应字符,拼接成验 ...

  6. .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...

  7. html实现验证码效果,js实现验证码功能

    本文实例为大家分享了js实现验证码功能的具体代码,供大家参考,具体内容如下 #前面是拆解着讲的,不想看可以直接跳过,带注释的完整版代码和效果在后面 首先在页面中准备一个输入框,一个显示验证码的盒子和一 ...

  8. java 实现验证码功能

    所需文件以及技术: · SecurityUtil.java   (后面我会复制给大家) · 图像处理技术 · 向客户端输出io流 一,实现的原理,当视图页面加载的时候通过<img >元素的 ...

  9. 【5分钟教你】3种实现验证码功能-数字短信验证码-图形验证码-滑动验证码

    摘要:我们在做一些后台系统的登录验证的时候.难免会用到验证码功能,来辅助进行验证,提高安全性,在我们日常生活中,验证方式无处不在,最多的是短信验证码的方式,通过点击发送验证码,然后手机接收短信,填写验 ...

  10. 实现app短信验证码功能这样做就很简单!

    现在大多数app短信验证码服务都是由第三方服务商提供的,企业不需要对接运营商就可以让app具备三网发送短信功能,现在app短信验证码使用场景很多,比如说注册.登陆.支付等场景,app短信验证码实现的原 ...

最新文章

  1. 为什么你的工作经验不值钱
  2. 《算法竞赛中的初等数论》(三)正文 0x30 积性函数(ACM / OI / MO)(十五万字符数论书)
  3. 杭州 |《PMCAFF产品经理第一课》阿里国际CRM、LinkedIn、丁香园、网易邮箱等一线大咖私房干货免费奉送!...
  4. Codeforces 1188E Problem from Red Panda (计数)
  5. android 整数与ip地址的转换
  6. 我发现不少大有课堂的年轻学员确实在做自媒体
  7. cjson源代码解读 (一)介绍
  8. JQuery怎么知道一个元素是否隐藏或显示How do you test if something is hidden in jQuery?
  9. Spark SQL External DataSource外部数据源操作流程
  10. c语言哈希表电子辞典_C语言实现的哈希表实现程序
  11. java背包算法_背包算法java版
  12. Visual Studio Code 取色器插件 取色选取 插件安装和使用
  13. WiFi PowerSave模式以及通过抓包判断是否生效
  14. Python路飞学城老男孩内部书籍,Python全栈开发实战pdf
  15. 表格,表单,文本域,下拉框,单选框,复选框,按钮
  16. 计算机上怎么设置qq隐藏图标,QQ图标隐藏了怎么弄出来
  17. 利用Python实现FGO自动战斗脚本,再也不用爆肝啦~
  18. 【操作系统】操作系统的功能管理与分类
  19. ORA-01940: cannot drop a user that is currently connected 问题解决
  20. python 合并工作簿_Excel:快速合并多张表格或多个文件(工作簿)的数据(附Python代码)...

热门文章

  1. linux修改参数命令,linux chfn命令参数及用法详解(linux修改用户资料命令)
  2. oracle 参数类型 存储过程 获取_oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案...
  3. mysql主从表单如何设计_如何快速的10分钟制作一张主从表单及功能
  4. uniapp延迟执行_uni-app android 调试运行首页一直卡在加载中
  5. git commit规范工具
  6. 函数WaitForMultipleObjects
  7. 《Java技术》第七次作业计科1501赵健宇
  8. 本机tomcat的server.xml被还原的问题及解决办法
  9. android 使用webview 加载网页
  10. 基于openstack的自动化测试平台设计头脑风暴