php中使用GD库做验证码


Posted in PHP onMarch 31, 2016
<?php 
require_once 'string.func.php';
//通过GD库做验证码
/**
 *添加验证文字
 * @param int $type
 * @param int $length
*/
function buildRandomString($type=1,$length=4){
  $row='';
  if($type==1){
    $row=join('',range(0, 9));
  }else if($type==2){
    $row=join('', array_merge(range('a','z'),range('A', 'Z')));
  }else if($type==3){
    $row=join('', array_merge(range('a','z'),range('A', 'Z'),range(0, 9)));
  };
  $row=str_shuffle($row);
  
  $row=substr($row,0,$length);
  return $row;
}
/**
 * 生成缩略图
 * @param int $type //包含数字或者英文
 * @param int $length 多少个字符
 * @param int $pixel 干扰小点的密度
 * @param int $dst_h 干扰线的密度
 * @param string //验证码在$_SESSION中的名字
 */

function verifyImage($type=1,$length=4,$pixel=0,$line=0,$sess_name = "verify"){
  //session_start();
  //创建画布
  $width = 100;
  $height = 40;
  $image = imagecreatetruecolor ( $width, $height );
  $white = imagecolorallocate ( $image, 255, 255, 255 );
  $black = imagecolorallocate ( $image, 0, 0, 0 );
  //用填充矩形填充画布
  imagefilledrectangle ( $image, 1, 1, $width - 2, $height - 2, $white );
  $chars = buildRandomString ( $type, $length );
  $_SESSION [$sess_name] = $chars;
  //$fontfiles = array ("MSYH.TTF", "MSYHBD.TTF", "SIMLI.TTF", "SIMSUN.TTC", "SIMYOU.TTF", "STZHONGS.TTF" );
  $fontfiles = array ("SIMKAI.TTF" );
  //由于字体文件比较大,就只保留一个字体,如果有需要的同学可以自己添加字体,字体在你的电脑中的fonts文件夹里有,直接运行输入fonts就能看到相应字体
  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 );
    $fontfile = "../fonts/" . $fontfiles [mt_rand ( 0, count ( $fontfiles ) - 1 )];
    $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
    $text = substr ( $chars, $i, 1 );
    imagettftext ( $image, $size, $angle, $x, $y, $color, $fontfile, $text );
  }
  if ($pixel) {
    for($i = 0; $i < 50; $i ++) {
      imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black );
    }
  }
  if ($line) {
    for($i = 1; $i < $line; $i ++) {
      $color = imagecolorallocate ( $image, mt_rand ( 50, 90 ), mt_rand ( 80, 200 ), mt_rand ( 90, 180 ) );
      imageline ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $color );
    }
  }
  header ( "content-type:image/gif" );
  imagegif ( $image );
  imagedestroy ( $image );
}

主要要点:

1、如果前面没有申明session_start();则需要申明;
2、字体可以在cmf输入fonts下载到自己定义的fonts文件夹;
3、$_SESSION [$sess_name]可以通过$_POST获得用户输入的验证码进行比较。

PHP 相关文章推荐
关于php mvc开发模式的感想
Jun 28 PHP
PHP include_path设置技巧分享
Jul 03 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
Aug 20 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
Feb 15 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
mac pecl 安装php7.1扩展教程
Oct 17 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 PHP
php实现搜索类封装示例
Mar 31 #PHP
PHP-FPM实现性能优化
Mar 31 #PHP
PHP实现通过URL提取根域名
Mar 31 #PHP
PHP的PDO操作简单示例
Mar 30 #PHP
PHP Smarty模版简单使用方法
Mar 30 #PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 #PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 #PHP
You might like
php实现分页工具类分享
2014/01/09 PHP
php curl_init函数用法
2014/01/31 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
js身份证验证超强脚本
2008/10/26 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
JS二分查找算法详解
2017/11/01 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
浅谈python 中的 type(), dtype(), astype()的区别
2020/04/09 Python
如何用python批量调整视频声音
2020/12/22 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
个人收入证明范本
2014/01/12 职场文书
婚庆司仪主持词
2014/03/15 职场文书
投资合作协议书范本
2014/04/17 职场文书
大学三年计划书范文
2014/04/30 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
社区班子对照检查材料
2014/08/27 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python
Oracle用户管理及赋权
2022/04/24 Oracle