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&amp;&amp;mysql)五
Oct 09 PHP
php minixml详解
Jul 19 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
php中的filesystem文件系统函数介绍及使用示例
Feb 13 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
PHP版微信小店接口开发实例
Nov 12 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
PHP实现的日历功能示例
Sep 01 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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
用PHP的ob_start();控制您的浏览器cache!
2006/11/25 PHP
php中iconv函数使用方法
2008/05/24 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
基于layui实现高级搜索(筛选)功能
2019/07/26 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
戴尔美国官网:Dell
2016/08/31 全球购物
素质拓展感言
2014/01/29 职场文书
自主招生自荐信指南
2014/02/04 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
就业意向协议书
2015/01/29 职场文书
python APScheduler执行定时任务介绍
2022/04/19 Python
Elasticsearch6.2服务器升配后的bug(避坑指南)
2022/09/23 Servers