一段实用的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设计模式之代理模式的深入解析
Jun 13 PHP
php获取当前时间的毫秒数的方法
Jan 26 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
php绘制一个扇形的方法
Jan 24 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
Laravel timestamps 设置为unix时间戳的方法
Oct 11 PHP
Laravel 修改验证异常的响应格式实例代码详解
May 25 PHP
PHP 技巧 * SVG 保存为图片(分享图生成)
Apr 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 中的一些经验积累
2006/10/09 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php eval函数一句话木马代码
2015/05/21 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
js微信分享实现代码
2020/10/11 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
python学习必备知识汇总
2017/09/08 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
购买大码女装:Lane Bryant
2016/09/07 全球购物
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
办公室驾驶员岗位职责
2013/11/15 职场文书
简历自荐信
2013/12/02 职场文书
2014年小学工作总结
2014/11/26 职场文书
先进党组织事迹材料
2014/12/26 职场文书
龙门石窟导游词
2015/02/02 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang
Python序列化模块JSON与Pickle
2022/06/05 Python