• php写验证码类


    简介:这是php写验证码类的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。

    class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=341730' scrolling='no'>

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

    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 public function __construct(){
    23 $this->font=ROOT_PATH.'/font/elephant.ttf';
    24 }
    25 //创建4个随机码
    26 private function 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 private function 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 private function 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 private function 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 private function outPut(){
    69 //生成标头
    70 header('ContentType:img/png');
    71 //输出图片
    72 imagepng($this->img);
    73 //销毁结果集
    74 imagedestroy($this->img);
    75 }
    76 //对外输出
    77 public function 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 public function getCode(){
    92 return strtolower($this->code);
    93 }
    94
    95 }
    96
    97 ?>

    其他页面调用方法

    index.php

    <?php

    require 'img.php';

    $img=new ValidateCode();

    echo $img->doimg();

    ?>

                                                                                                                    过往云烟 2011/07/29

    爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

    http://biancheng.dnbcw.info/php/341730.html pageNo:6
  • 相关阅读:
    LaTeX 超链接
    剑指offer2 数组
    LaTeX 插入源代码
    RGB
    linux 程序在后台运行
    Linux Vim编辑与退出
    复杂度估计
    剑指offer 2 loading...
    剑指offer2 整数
    剑指offer2 字符串
  • 原文地址:https://www.cnblogs.com/ooooo/p/2243907.html
Copyright © 2020-2023  润新知