一段实用的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中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
php不用正则验证真假身份证
Nov 06 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
php使用NumberFormatter格式化货币的方法
Mar 21 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
php HTML无刷新提交表单
Apr 05 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
如何利用PHP执行.SQL文件
2013/07/05 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
PHP二维数组去重算法
2016/12/17 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
在django中自定义字段Field详解
2019/12/03 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
中班中秋节活动反思
2014/02/18 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
爱心募捐通知范文
2015/04/27 职场文书
消防安全月活动总结
2015/05/08 职场文书
给下属加薪申请报告
2015/05/15 职场文书
婚育证明格式
2015/06/17 职场文书
党员反腐倡廉学习心得体会
2015/08/15 职场文书