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中for循环语句的几种变型
Nov 26 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
PHP加密扩展库Mcrypt安装和实例
Nov 10 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
php格式文件打开的四种方法
Feb 24 PHP
php工具型代码之印章抠图
Jul 18 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 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中strtr字符串替换用法详解
2014/11/26 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
测试你的JS的掌握程度的代码
2009/12/09 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
网页爬虫之cookie自动获取及过期自动更新的实现方法
2018/03/06 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
vue实现购物车小案例
2019/09/27 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
Python OpenCV实现图片上输出中文
2018/01/22 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
W3C公布最新的HTML5标准草案
2008/10/17 HTML / CSS
村委会换届选举方案
2014/05/03 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
人事主管岗位职责
2015/02/04 职场文书
中学教师读书笔记
2015/07/01 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
求职自荐信该如何书写?
2019/06/24 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android