一段实用的php验证码函数


Posted in PHP onMay 19, 2016

本文实例为大家分享了几段php验证码函数,都很实用,具体内容如下

代码段一:简单php验证码函数

<?php
 
 function code(){
 
 $im = imagecreatetruecolor(100, 40);
 
 $black = imagecolorallocate($im, 0, 0, 0);
 
 $white = imagecolorallocate($im, 255, 255, 255);
 
 
 
 imagefill($im,0,0,$white);
 
 $strarr=array_merge(range(0,9),range(a,z),range(A,Z));
 
 shuffle($strarr);
 
 $str=join(array_slice($strarr,0,4));
 
 $mm=rand(0,40);
 
 $aaa=rand(0,0);
 
 $bbb=rand(0,255);
 
 $ccc=rand(0,255);
 
 $color1=imagecolorallocate($im,$aaa,$bbb,$ccc);
 
 imagestring($im,5,$mm,10,$str,$color1);
 
 for($i=0;$i<700;$i++){
 
   $aa=rand(0,255);
 
   $bb=rand(0,255);
 
   $cc=rand(0,255);
 
 $color=imagecolorallocate($im,$aa,$bb,$cc);
 
   $a=rand(0,100);
 
   $b=rand(0,40);
 
   imagesetpixel($im,$a,$b,$color);
 
 }
 
 for($t=0;$t<3;$t++){
 
   $a1=rand(0,255);
 
   $b1=rand(0,255);
 
   $c1=rand(0,255);
 
 $color2=imagecolorallocate($im,$a1,$b1,$c1);
 
   $a2=rand(0,100);
 
   $b2=rand(0,40);
 
   $a3=rand(0,100);
 
   $b3=rand(0,40);
 
   imageline($im,$a2,$b2,$b3,$b3,$color2);
 
 }
 
 
 
 header("content-type:image/png");
 
 imagepng($im);
 
 }
 
 code() ;
 
?>

代码段二:php验证码函数

function _code($_code_length = 4, $_width = 75, $_height = 25){
 for($i=0;$i<$_code_length;$i++){
  $_nmsg .= dechex(mt_rand(0,15));
 }
 $_SESSION["code"] = $_nmsg;

 $_img = imagecreatetruecolor($_width, $_height);

 $_white = imagecolorallocate($_img, 250, 250, 250);

 imagefill($_img, 0, 0, $_white);

 $_gray = imagecolorallocate($_img, 196, 196, 196);

 imagerectangle($_img, 0, 0, $_width-1, $_height-1, $_gray);

 for ($i=0; $i < 6; $i++) { 
  $_md_color = imagecolorallocate($_img, mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
  imageline($_img, mt_rand(0,$_width), mt_rand(0, $_height),mt_rand(0,$_width), mt_rand(0, $_height), $_md_color);
 }

 for ($i=0; $i < 50; $i++) { 
  $_md_color = imagecolorallocate($_img, mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
  imagestring($_img, 1, mt_rand(1,$_width-5), mt_rand(1, $_height-5), "*", $_md_color);
 }

 for ($i=0; $i < $_code_length ; $i++) { 
  $_md_color = imagecolorallocate($_img, mt_rand(0,102), mt_rand(0,102), mt_rand(0,102));
  imagestring($_img, 5, $i * $_width/$_code_length+ mt_rand(1, 10), mt_rand(1, $_height/2), $_SESSION["code"][$i], $_md_color);
 }

 header("Content-Type:image/png");

 imagepng($_img);

 imagedestroy($_img);
}

代码段三:php图片验证码函数

/*@ captcha()函数的功能:生成验证码
 * @ 可自定义参数:
 * @ $width 图片宽度,默认80
 * @ $high 高度,默认25
 * @ $num 验证码个数,默认4个
 * @ $line_num 随机画线条的个数,默认10
 * @ $snow_num 随机雪花的数量,默认50
 */
function captcha($width=80,$high=25,$num=4,$line_num=10,$snow_num=50){
 header('Content-Type:image/png');
 session_start();
 //生成随机数字+字母
 for($a = 0;$a < $num;$a++){
  $code .= dechex(mt_rand(0, 15));//dechex — 十进制转换为十六进制
 }
 //把生成的验证码保存在SESSION超级全局数组中
 $_SESSION['captcha'] = $code;
 //创建画布
 $img = imagecreatetruecolor($width,$high);
 //填充背景色为白色
 $backcolor = imagecolorallocate($img, '255', '255', '255');
 imagefill($img, '0', '0', $backcolor);
 //添加黑色边框
 $bordercolor = imagecolorallocate($img, 0, 0, 0);
 imagerectangle($img, 0, 0, $width-1, $high-1, $bordercolor);
 //随机画线条
 for($i=0;$i<$line_num;$i++){
  imageline($img, mt_rand(0, $width*0.1), mt_rand(0, $high), mt_rand($width*0.9, $width), mt_rand(0, $high),
  imagecolorallocate($img, mt_rand(150, 255), mt_rand(150, 255), mt_rand(150, 255)));
 }
 //随机打雪花
 for ($i=0;$i<$snow_num;$i++){
  imagechar($img,1, mt_rand(0, $width), mt_rand(0, $high),'*',
  imagecolorallocate($img, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255)));
 }
 //画验证码
 for ($b = 0;$b < strlen($_SESSION['captcha']);$b++){
  imagechar($img,5, $b*$width/$num+mt_rand(5,10), mt_rand(2, $high/2),$_SESSION['captcha'][$b],
  imagecolorallocate($img, mt_rand(10, 150), mt_rand(10, 150), mt_rand(0, 100)));
 }
 ob_clean();//清空输出缓冲区
 imagepng($img);
 imagedestroy($img);
}

以上就是三段参考性较高的php验证码函数,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
php递归创建和删除文件夹的代码小结
Apr 13 PHP
PHP删除HTMl标签的三种解决方法
Jun 30 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
php生成二维码时出现中文乱码的解决方法
Dec 18 PHP
php验证手机号码
Nov 11 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
浅析PHP数据导出知识点
Feb 17 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 PHP
php多进程应用场景实例详解
Jul 22 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 PHP
thinkphp3.x中cookie方法的用法分析
May 19 #PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 #PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 #PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
May 19 #PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 #PHP
php处理json格式数据经典案例总结
May 19 #PHP
CI框架整合smarty步骤详解
May 19 #PHP
You might like
php 高性能书写
2010/12/11 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
javascript解析json格式的数据方法详解
2020/08/07 Javascript
Python数据类型详解(四)字典:dict
2016/05/12 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python中bisect的使用方法
2019/12/31 Python
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
总务岗位职责
2013/11/19 职场文书
客服专员岗位职责范本
2013/11/29 职场文书
中层干部岗位职责
2013/12/18 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL