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 相关文章推荐
php&amp;java(三)
Oct 09 PHP
php中的静态变量的基本用法
Mar 20 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
php使用gzip压缩传输js和css文件的方法
Jul 29 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
PHP实现简单的计算器
Aug 28 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语法(5)
2006/10/09 PHP
PHP 数组入门教程小结
2009/05/20 PHP
Windows IIS PHP 5.2 安装与配置方法
2009/06/08 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
php读取本地json文件的实例
2018/03/07 PHP
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
js转换对象为xml
2017/02/17 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
Python字符串格式化输出方法分析
2016/04/13 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
销售人员个人求职信
2013/09/26 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
Mysql如何查看是否使用到索引
2022/12/24 MySQL