php实现生成验证码实例分享


Posted in PHP onApril 10, 2016

image.func.php

<?php 
require_once('string.func.php');
 
 function verifyImage( $type=1,$length=4,$pixel=0,$line=0,$sess_name="verify"){ 
 
  session_start();
  /*定义长度和宽度*/
$width=80;
$height=30;
/* 创建画布*/
$image=imagecreatetruecolor($width, $height);
 
/*本函数用来匹配图形的颜色,供其它绘图函数使用。参数 image 表示图形的 handle。参数 red、green、blue 是色彩三原色,其值从 0 至 255....我在此定义黑色和白色*/
$white=imagecolorallocate($image, 255, 255, 255);
$black=imagecolorallocate($image,0,0,0);
 
/*本函数将图片的封闭长方形区域着色。参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。参数 col 表示欲涂上的颜色*/
imagefilledrectangle($image, 1, 1, $width-2, $height-2, $white);
 
/*buildRandomString函数用来生成一个验证码*/
$chars=buildRandomString($type,$length);
 
/*将验证码给session以便用来判断用户输入是否正确*/
$_SESSION[$sess_name]=$chars;
 
/*定义字体库*/
$fontfiles=array('msyh.ttf','msyhbd.ttf','simsun.ttc','SIMYOU.TTF','STHUPO.TTF','STKAITI.TTF','STLITI.TTF');
 
 
/*用循环来将验证码一个一个的写入图片中*/
for($i=0;$i<$length;$i++)
{
  $size=mt_rand(14,18);
  $angle=mt_rand(-15,15);
 
  /*验证码的横坐标与纵坐标*/
  $x=5+$i*$size;
  $y=mt_rand(20,26);
 
  $color=imagecolorallocate($image,mt_rand(50,190),mt_rand(50,200),mt_rand(50,90));
  $fontfile="../font/".$fontfiles[mt_rand(0,count($fontfiles)-1)];
  $text=substr($chars,$i,1);
 
  /*本函数将 TTF (TrueType Fonts) 字型文字写入图片*/
 imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
}
if($pixel)
{
for($i=0;$i<50;$i++)
{
  /*本函数可在图片上绘出一点。参数 x、y 为欲绘点的坐标,参数 col 表示该点的颜色*/
  imagesetpixel($image, mt_rand(0,$width-1), mt_rand(0,$height-1), $black);
}}
if($line)
{
  for($i=0;$i<10;$i++)
  {
  $color=imagecolorallocate($image,mt_rand(50,90),mt_rand(50,200),mt_rand(50,90));
  /*画线段*/
  imageline($image, mt_rand(0,$width-1), mt_rand(0,$height-1), mt_rand(0,$width-1), mt_rand(0,$height-1), $color);
}
}
/*以gif形式输出*/
header("content-type:image/gif");
/*建立GIF图 并输出到网页*/
imagegif($image);
/*释放与 image 关联的内存*/
imagedestroy($image);
}

string.func.php

<?php 
 
function buildRandomString($type=1,$length=4){
 
if($type==1)
{
  /*join函数把数组转换为字符串。。join() 函数是 implode() 函数的别名*/
  $chars=join("",range(0,9));
}elseif ($type==2) {
  /*array_merge函数合并数组*/
  $chars=join("",array_merge(range("a","z"),range("A","Z")));
}elseif($type==3)
{
  $chars=join("",array_merge(range("a","z"),range("A","Z"),range(0,9)));
}
 
if($length>strlen($chars))
{
  exit("字符串长度不够");
}
/*打乱字符串*/
$chars=str_shuffle($chars);
return substr($chars,0,$length);
 
}
 ?>
PHP 相关文章推荐
一道关于php变量引用的面试题
Aug 08 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
PHP关联数组的10个操作技巧
Jan 21 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
Aug 06 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
Dec 14 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
phpinfo的知识点总结
Oct 10 PHP
PHP实现简单实用的分页类代码
Apr 08 #PHP
PHP文件上传类实例详解
Apr 08 #PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 #PHP
php生成带logo二维码方法小结
Apr 08 #PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 #PHP
PHP中__autoload和Smarty冲突的简单解决方法
Apr 08 #PHP
初识ThinkPHP控制器
Apr 07 #PHP
You might like
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
python基础教程之Hello World!
2014/08/29 Python
详解python之配置日志的几种方式
2017/05/22 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
python图形用户接口实例详解
2019/12/16 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
Sql面试题
2013/03/20 面试题
红领巾广播站广播稿
2014/02/01 职场文书
挂科检讨书范文
2014/02/20 职场文书
交警个人先进事迹材料
2014/05/11 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
2014法院干警廉洁警示教育思想汇报
2014/09/13 职场文书
死亡证明书样本说明
2014/10/18 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang