php验证码的制作思路和实现方法


Posted in PHP onNovember 12, 2015

一、制作思路

由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生png图片验证码的基本图像,简单的思路分析:

1、产生一张png的图片
2、为图片设置背景色
3、设置字体颜色和样式
4、产生4位数的随机的验证码
5、把产生的每个字符调整旋转角度和位置画到png图片上
6、加入噪点和干扰线防止注册机器分析原图片来恶意注册
7、输出图片
8、释放图片所占内存

二、实现方法

authcode.php文件

<?php
    session_start ();
    header ( 'Content-type: image/png' );
    //创建图片
    $im = imagecreate($x=130,$y=45 );
    $bg = imagecolorallocate($im,rand(50,200),rand(0,155),rand(0,155)); //第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色
    $fontColor = imageColorAllocate ( $im, 255, 255, 255 );  //字体颜色
    $fontstyle = 'rock.ttf';          //字体样式,这个可以从c:\windows\Fonts\文件夹下找到,我把它放到和authcode.php文件同一个目录,这里可以替换其他的字体样式
    //产生随机字符
    for($i = 0; $i < 4; $i ++) {
        $randAsciiNumArray     = array (rand(48,57),rand(65,90));
        $randAsciiNum         = $randAsciiNumArray [rand ( 0, 1 )];
        $randStr             = chr ( $randAsciiNum );
        imagettftext($im,30,rand(0,20)-rand(0,25),5+$i*30,rand(30,35),$fontColor,$fontstyle,$randStr);
        $authcode            .= $randStr; 
    }
    $_SESSION['authcode']    = $randFourStr;//用户和用户输入的验证码做比较
    //干扰线
    for ($i=0;$i<8;$i++){
        $lineColor    = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
        imageline ($im,rand(0,$x),0,rand(0,$x),$y,$lineColor);
    }
    //干扰点
    for ($i=0;$i<250;$i++){
        imagesetpixel($im,rand(0,$x),rand(0,$y),$fontColor);
    }
    imagepng($im);
    imagedestroy($im);        
?>

效果图:

php验证码的制作思路和实现方法

以上就是php验证码的制作思路和实现方法,希望对大家的学习有所帮助。

PHP 相关文章推荐
我的论坛源代码(十)
Oct 09 PHP
PHP音乐采集(部分代码)
Feb 14 PHP
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
PHP可变变量学习小结
Nov 29 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 PHP
两款万能的php分页类
Nov 12 #PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 #PHP
php验证手机号码
Nov 11 #PHP
Thinkphp无限级分类代码
Nov 11 #PHP
php验证码生成代码
Nov 11 #PHP
分享10段PHP常用代码
Nov 11 #PHP
php+mysql实现无限级分类
Nov 11 #PHP
You might like
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
JavaScript 拖拉缩放效果
2008/12/10 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
Python错误处理操作示例
2018/07/18 Python
python感知机实现代码
2019/01/18 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
2021/01/18 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
法律专业个人实习自我鉴定
2013/09/23 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
建材投资建议书
2014/05/16 职场文书
高中课程设置方案
2014/05/28 职场文书
励志演讲稿800字
2014/08/21 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python