<?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获得用户输入的验证码进行比较。

最新文章

  1. JAVA 循环语句的练习
  2. 对二进制加密(分散保存-s=sy+a+b)
  3. SpringBoot配置Email发送功能
  4. IOS中用UIStoryBoard类初始化/跳转控制器
  5. java web 学习十三(使用session防止表单重复提交)
  6. hadoop 文件 复制 移动 FileUtil.copy
  7. RichEdit 各个版本介绍
  8. 理解Java中的前期绑定和后期绑定
  9. windows server 2008 NTP授时服务[转]
  10. javascript 变量 命名规范 变量的作用域
  11. mysql的内连接,外连接(左外连接,右外连接)巩固
  12. Android BLE与终端通信(二)——Android Bluetooth基础科普以及搜索蓝牙设备显示列表
  13. 前端可视化项目流程,涉及three.js(webGL),3DMax技术,持续更新
  14. windows 上安装冷门python模块
  15. H5 五子棋源码
  16. JavaWeb学习 (十三)————JSP
  17. Multiplication of numbers
  18. 数据结构与算法之PHP查找算法(哈希查找)
  19. Hopfield神经网络和TSP问题
  20. 06: AJAX全套 &amp; jsonp跨域AJAX

热门文章

  1. tomcat详细日志配置
  2. Ubuntu下Django初体验(三)——django初体验
  3. Y2K Accounting Bug
  4. Quartz定时任务学习(二)web应用
  5. jQuery基本知识体系图
  6. HTML5到底能给企业带来些什么?
  7. C#写的笔记管理软件
  8. 网络学习笔记----01--pathping跟踪数据包路径
  9. hdu4504java
  10. oracle设定用户密码使用时间