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代码简化
Feb 08 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
php教程之phpize使用方法
Feb 12 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
php实现过滤UBB代码的类
Mar 12 PHP
PHP版微信公众平台红包API
Apr 02 PHP
php生成年月日下载列表的方法
Apr 24 PHP
php实现可运算的验证码
Nov 10 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
php empty 函数判断结果为空但实际值却为非空的原因解析
May 28 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 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强制下载类型的实现代码
2011/04/21 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
基于javascript 闭包基础分享
2013/07/10 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
python使用生成器实现可迭代对象
2018/03/20 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python批量获取html内body内容的实例
2019/01/02 Python
python制作简单五子棋游戏
2019/06/18 Python
Python利用WMI实现ping命令的例子
2019/08/14 Python
Python实现名片管理系统
2020/02/14 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
如何在python中实现线性回归
2020/08/10 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
英国家用电器购物网站:Hughes
2018/02/23 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
事务机电主管工作职责
2014/02/25 职场文书
教师一帮一活动总结
2014/07/08 职场文书
政风行风建设整改方案
2014/10/27 职场文书
长城导游词
2015/01/30 职场文书
大学生实习证明
2015/06/16 职场文书
Python如何使用循环结构和分支结构
2022/04/13 Python