一段实用的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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
攻克CakePHP系列一 连接MySQL数据库
Oct 22 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
PHP二分查找算法示例【递归与非递归方法】
Sep 29 PHP
php结合ajax实现手机发红包的案例
Oct 13 PHP
基于CI框架的微信网页授权库示例
Nov 25 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
利用php操作memcache缓存的基础方法示例
Aug 02 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 PHP
PHP7 其他修改
Mar 09 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
在JS中如何调用JSP中的变量
2014/01/22 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
Python中的__SLOTS__属性使用示例
2015/02/18 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
python执行精确的小数计算方法
2019/01/21 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python实现Restful API的例子
2019/08/31 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
会计出纳员的自我评价
2014/01/15 职场文书
精彩自我鉴定
2014/01/16 职场文书
卫生系统先进事迹
2014/05/13 职场文书
保护环境倡议书100字
2014/05/19 职场文书
长城英文导游词
2015/01/30 职场文书
教师求职信怎么写
2015/03/20 职场文书
安全责任协议书范本
2016/03/23 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL