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 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
php设计模式小结
Feb 15 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
YII实现分页的方法
Jul 09 PHP
php生成圆角图片的方法
Apr 07 PHP
php为字符串前后添加指定数量字符的方法
May 04 PHP
php文件上传类完整实例
May 14 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
May 11 PHP
PHP 实现缩略图
Mar 09 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
zend framework文件上传功能实例代码
2013/12/25 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
JavaScript错误处理操作实例详解
2019/01/04 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python代码实现KNN算法
2017/12/20 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
解决tensorflow读取本地MNITS_data失败的原因
2020/06/22 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
英国在线泳装店:Simply Swim
2019/05/05 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
PHP面试题集
2016/12/18 面试题
什么是SCM(软件配置管理)
2014/08/16 面试题
学校卫生检查制度
2014/02/03 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
档案管理员岗位职责
2015/02/12 职场文书
服装店员工管理制度
2015/08/07 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
浅谈PHP7中的一些小技巧
2021/05/29 PHP