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 相关文章推荐
开源SNS系统-ThinkSNS
May 18 PHP
在PHP中养成7个面向对象的好习惯
Jul 17 PHP
PHP number_format() 函数定义和用法
Jun 01 PHP
使用PHP编写的SVN类
Jul 18 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
php根据用户名和手机号查询是否存在手机号码
Feb 16 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
thinkPHP事务操作简单案例分析
Oct 17 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 生成唯一id的几种解决方法
2013/03/08 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
给文字加上着重号的JS代码
2013/11/12 Javascript
JavaScript将页面表格导出为Excel的具体实现
2013/12/27 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
jquery如何扑捉回车键触发的事件
2014/04/24 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
python判断字符串是否是json格式方法分享
2017/11/07 Python
python发送邮件脚本
2018/05/22 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python Flask框架扩展操作示例
2019/05/03 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
flask框架中的cookie和session使用
2021/01/31 Python
工地安全标语
2014/06/07 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
2015年团支部工作总结
2015/04/03 职场文书
python 中yaml文件用法大全
2021/07/04 Python