一段实用的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无敌近乎加密方式!
Jul 17 PHP
php中定时计划任务的实现原理
Jan 08 PHP
使用php判断网页是否gzip压缩
Jun 25 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
Yii框架的路由配置方法分析
Sep 09 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 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实现RTX发送消息提醒的实例代码
2017/01/03 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
jquery.validate的使用说明介绍
2013/11/12 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
深入理解python中的atexit模块
2017/03/07 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
python实现电子书翻页小程序
2019/07/23 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
运动会广播稿400字
2014/01/25 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
机械系毕业生求职信
2014/05/28 职场文书
党员十八大心得体会
2014/09/12 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python