php生成图片验证码的方法


Posted in PHP onApril 15, 2016

本文为大家分享了php生成图片验证码的方法,供大家参考,具体内容如下

首先从指定字符集合中随机抽取固定数目的字符,以一种不规则的方法画在画布上,再适当添加一些干扰点和干扰元素,最后将图片输出,一张崭新的验证码就完成了。

前端代码如下:

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="content-type" content="text/html;charset=utf-8">
 <title>This is a test!</title>
 <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
</head>
<body>
 <form name="form">
  <input type="text" placeholder="账号"/><br/>
  <input type="password" placeholder="密码"/><br/>
  <input type="text" placeholder="验证码"/>
  <img id="verImg" src="libs/verification.php"/>
  <a href="#" class="change" onclick="changeVer()">点击刷新</a><br/>
  <input type="submit" value="登录"/>
 </form>
 <script type="text/javascript">
 //刷新验证码
 function changeVer(){
  document.getElementById("verImg").src="libs/verification.php?tmp="+Math.random();
 }
 </script>
</body>
</html>

php脚本文件验证码的代码如下:

<?php
 
session_start();
//开启session记录验证码数据
 
vCode(4, 15);//设置验证码的字符个数和图片基础宽度
 
//vCode 字符数目,字体大小,图片宽度、高度
function vCode($num = 4, $size = 20, $width = 0, $height = 0) {
 
 !$width && $width = $num * $size * 4 / 5 + 15;
 !$height && $height = $size + 10;
 
 //设置验证码字符集合
 $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
 //保存获取的验证码
 $code = '';
 
 //随机选取字符
 for ($i = 0; $i < $num; $i++) {
  $code .= $str[mt_rand(0, strlen($str)-1)];
 }
 
 //创建验证码画布
 $im = imagecreatetruecolor($width, $height);
 
 //背景色
 $back_color = imagecolorallocate($im, mt_rand(0,100),mt_rand(0,100), mt_rand(0,100));
 
 //文本色
 $text_color = imagecolorallocate($im, mt_rand(100, 255), mt_rand(100, 255), mt_rand(100, 255));
 
 imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
 
 
  // 画干扰线
 for($i = 0;$i < 5;$i++) {
  $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color);
 }
 
  // 画干扰点
 for($i = 0;$i < 50;$i++) {
  $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
 }
 
 //随机旋转角度数组
 $array=array(5,4,3,2,1,0,-1,-2,-3,-4,-5);
 
  // 输出验证码
 // imagefttext(image, size, angle, x, y, color, fontfile, text)
 @imagefttext($im, $size , array_rand($array), 12, $size + 6, $text_color, 'c:\WINDOWS\Fonts\simsun.ttc', $code);
 $_SESSION["VerifyCode"]=$code;
 //no-cache在每次请求时都会访问服务器
 //max-age在请求1s后再次请求会再次访问服务器,must-revalidate则第一发送请求会访问服务器,之后不会再访问服务器
 // header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
 header("Cache-Control: no-cache");
 header("Content-type: image/png;charset=gb2312");
 //将图片转化为png格式
 imagepng($im);
 imagedestroy($im);
}
?>

效果图:

php生成图片验证码的方法

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助,大家学会编写php图片验证码

PHP 相关文章推荐
1.PHP简介
Oct 09 PHP
PHP4与PHP5的时间格式问题
Feb 17 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
php实现事件监听与触发的方法
Nov 21 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
Nov 29 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 #PHP
php上传大文件设置方法
Apr 14 #PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 #PHP
java模拟PHP的pack和unpack类
Apr 13 #PHP
php远程下载类分享
Apr 13 #PHP
Thinkphp和onethink实现微信支付插件
Apr 13 #PHP
PHP MSSQL 分页实例
Apr 13 #PHP
You might like
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
angularJS结合canvas画图例子
2015/02/09 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
Vue.js 和 MVVM 的注意事项
2016/11/07 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python 爬取必应壁纸的实例讲解
2020/02/24 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
工作自我评价怎么写
2014/01/29 职场文书
意向协议书范本
2014/04/23 职场文书
质量承诺书怎么写
2014/05/24 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
教你用python控制安卓手机
2021/05/13 Python