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

 更新时间:2016年04月10日 08:53:36   作者:aqiaqi  
由于注册的时候常常会用到注册码来防止机器恶意注册,这里我发表一个产生图片验证码的基本图像,很简陋,有需要的小伙伴可以参考下

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);
 
}
 ?>

相关文章

  • 如何使用微信公众平台开发模式实现多客服

    如何使用微信公众平台开发模式实现多客服

    其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多客服功能怎么使用,我找了下网上也没什么好的教程,今天我就给大家发一篇比较简单易懂的教程吧
    2016-01-01
  • PHP中exec函数和shell_exec函数的区别

    PHP中exec函数和shell_exec函数的区别

    这篇文章主要介绍了PHP中exec函数和shell_exec函数的区别,这两个函数是非常危险的函数,一般情况都是被禁用的,当然特殊情况下也会使用,需要的朋友可以参考下
    2014-08-08
  • thinkPHP实现MemCache分布式缓存功能

    thinkPHP实现MemCache分布式缓存功能

    这篇文章主要介绍了thinkPHP实现MemCache分布式缓存功能的方法,结合实例形式分析了thinkPHP通过修改CacheMemcache.class.php源文件实现分布式缓存功能的具体实现技巧,需要的朋友可以参考下
    2016-03-03
  • Nginx+php配置文件及原理解析

    Nginx+php配置文件及原理解析

    这篇文章主要介绍了Nginx+php配置文件及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • thinkphp中AJAX返回ajaxReturn()方法分析

    thinkphp中AJAX返回ajaxReturn()方法分析

    这篇文章主要介绍了thinkphp中AJAX返回ajaxReturn()方法,结合实例形式分析了thinkPHP中ajax操作的功能、数据返回格式以及ajaxReturn方法的简单使用技巧,需要的朋友可以参考下
    2016-12-12
  • Yii框架的redis命令使用方法简单示例

    Yii框架的redis命令使用方法简单示例

    这篇文章主要介绍了Yii框架的redis命令使用方法,结合简单实例形式分析了Yii框架redis命令相关的过期时间设置、数据存储、添加、删除、输出等操作技巧,需要的朋友可以参考下
    2019-10-10
  • 两种php给图片加水印的实现代码

    两种php给图片加水印的实现代码

    本文提供了两种php给图片加水印的实现代码,其中一种是添加文字水印,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-07-07
  • CodeIgniter针对lighttpd服务器URL重写的方法

    CodeIgniter针对lighttpd服务器URL重写的方法

    这篇文章主要介绍了CodeIgniter针对lighttpd服务器URL重写的方法,涉及lighttpd服务器配置及URL配置规则的相关技巧,需要的朋友可以参考下
    2015-06-06
  • TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】

    TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】

    这篇文章主要介绍了TP5框架model常见操作,结合实例形式总结分析了thinkPHP5框架增删改查、聚合、获取器、修改器、时间戳、软删除等常见操作技巧,需要的朋友可以参考下
    2020-04-04
  • php判断手机浏览还是web浏览,并执行相应的动作简单实例

    php判断手机浏览还是web浏览,并执行相应的动作简单实例

    下面小编就为大家带来一篇php判断手机浏览还是web浏览,并执行相应的动作简单实例。小编觉得挺不错的,现在就分享给大家,也给的大家做个参考。一起跟随小编过来看看吧
    2016-07-07

最新评论