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设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
PHPMailer邮件发送的实现代码
May 04 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
php中使用sftp教程
Mar 30 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
PHP整合PayPal支付
Jun 11 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
关于laravel框架中的常用目录路径函数
Oct 23 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接收POST数据,解析json数据
2013/06/28 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
PHP生成树的方法
2015/07/28 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
python计算二维矩形IOU实例
2020/01/18 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
python中有函数重载吗
2020/05/28 Python
django美化后台django-suit的安装配置操作
2020/07/12 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
给同学的道歉信
2014/01/16 职场文书
工作决心书范文
2014/03/11 职场文书
单位未婚证明范本
2014/11/25 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python