zoukankan      html  css  js  c++  java
  • php写验证码类

    前一段时间我写了个验证码函数, 今天做成了验证码类 有助于面向对象编程。

    img.php

     1 <?php
    2 /**
    3 * QQ:279861795
    4 * Author: gwyy
    5 * Date: 2011-7-01
    6 *通用验证码类
    7 *版本:V0.1
    8 */
    9
    10 class ValidateCode {
    11 private$charset="abcdefghizklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; //随机因子
    12 private$code; //验证码文字
    13 private$codelen=4; //验证码显示几个文字
    14 private$width=130; //验证码宽度
    15 private$height=50; //验证码高度
    16 private$img; //验证码资源句柄
    17 private$font; //指定的字体
    18 private$fontsize=20; //指定的字体大小
    19 private$fontcolor; //字体颜色 随机
    20
    21 //构造类 编写字体
    22 publicfunction __construct(){
    23 $this->font=ROOT_PATH.'/font/elephant.ttf';
    24 }
    25 //创建4个随机码
    26 privatefunction createCode(){
    27 $_leng=strlen($this->charset);
    28 for($i=1;$i<=$this->codelen;$i++){
    29 $this->code.=$this->charset[mt_rand(0,$_leng)];
    30 }
    31 return$this->code;
    32 }
    33
    34 //创建背景
    35 privatefunction createBg(){
    36 //创建画布 给一个资源jubing
    37 $this->img=imagecreatetruecolor($this->width,$this->height);
    38 //背景颜色
    39 $color=imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));
    40 //画出一个矩形
    41 imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);
    42 }
    43
    44 //创建字体
    45 privatefunction createFont(){
    46 $_x=($this->width /$this->codelen); //字体长度
    47 for ($i=0;$i<$this->codelen;$i++){
    48 //文字颜色
    49 $color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
    50 //资源句柄 字体大小 倾斜度 字体长度 字体高度 字体颜色 字体 具体文本
    51 imagettftext($this->img,$this->fontsize,mt_rand(-30,30),$_x*$i+mt_rand(1,5),$this->height/1.4,$color,$this->font,$this->code[$i]);
    52 }
    53 }
    54 //随机线条
    55 privatefunction createLine(){
    56 //随机线条
    57 for ($i=0;$i<6;$i++){
    58 $color= imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
    59 imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
    60 }
    61 //随机雪花
    62 for ($i=0;$i<45;$i++){
    63 $color= imagecolorallocate($this->img,mt_rand(220,255),mt_rand(220,255),mt_rand(220,255));
    64 imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
    65 }
    66 }
    67 //输出背景
    68 privatefunction outPut(){
    69 //生成标头
    70 header('ContentType:img/png');
    71 //输出图片
    72 imagepng($this->img);
    73 //销毁结果集
    74 imagedestroy($this->img);
    75 }
    76 //对外输出
    77 publicfunction doimg(){
    78 //加载背景
    79 $this->createBg();
    80 //加载文件
    81 $this->createCode();
    82 //加载线条
    83 $this->createLine();
    84 //加载字体
    85 $this->createFont();
    86 //加载背景
    87 $this->outPut();
    88 }
    89
    90 //获取验证码
    91 publicfunction getCode(){
    92 returnstrtolower($this->code);
    93 }
    94
    95 }
    96
    97 ?>

    其他页面调用方法

    index.php

    <?php

    require 'img.php';

    $img=new ValidateCode();

    echo $img->doimg();

    ?>

                                                                                                                    过往云烟 2011/07/29

  • 相关阅读:
    C#.NET常见问题(FAQ)-如何在不同窗体之间传递值
    C#.NET常见问题(FAQ)-如何不显示窗口的关闭按钮
    C#.NET常见问题(FAQ)-如何判断两个类是否相同类型
    C#.NET常见问题(FAQ)-如何判断某个字符是否为汉字
    C#.NET常见问题(FAQ)-如何改变字符串编码
    C# 多线程编程 ThreadStart ParameterizedThreadStart
    C# 线程调用主线程中的控件
    LINQ to XML 编程基础
    LINQ to XML 建立,读取,增,删,改
    WinForm 自动完成控件实例代码简析
  • 原文地址:https://www.cnblogs.com/gwyy/p/2120548.html
Copyright © 2011-2022 走看看