龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 一个自己写的10以内的加减法验证码

时间:2014-07-14 15:19来源:网络整理 作者:网络 点击:
分享到:
一个自己写的10以内的加减法验证码 [代码片段(56行)]
<?php
/*图片验证码文件,加减计算方式*/

class ImageCode{

    private $Jiashu  = 0;        //加数或者减数
    private $JianShu = 0;        //被加数或者被减数
    private $YunSuan = '';       //运算符
    private $DeShu   = 0;        //得数
    private $String  = '';       //字符串样式
    private $Img;                //图片对象
    private $Width   = 100;      //图片宽度
    private $Height  = 50;       //图片高度
    private $Ttf     = 'Num.ttf';//字体文件
    private $Session = 'code';   //Session变量

    private function JiaShu(){
        header('Content-type:image/png');
        $this -> Jiashu  = rand(1, 10);
        $this -> JianShu = rand(1, 10);
        $this -> YunSuan= $this -> Jiashu > $this -> JianShu ? '-' : '+';
        $this -> DeShu   = $this -> Jiashu > $this -> JianShu ? $this -> Jiashu - $this -> JianShu : $this -> Jiashu + $this -> JianShu;
    }

    public function Show( $W = 100, $H = 50, $T = 'Num.ttf', $Code = 'code' ){
        $this -> JiaShu();
        $this -> String = $this -> Jiashu . $this -> YunSuan . $this -> JianShu . '= ? ';
        $this -> Width  = $W;
        $this -> Height = $H;
        $this -> Ttf    = $T;
        $this -> Session= $Code;
        session_start();
        $_SESSION[$this -> Session] = $this -> DeShu;
        $this -> Images();
    }

    private function Images(){
        $this -> Img = imagecreate($this -> Width, $this -> Height);
        $background_color = imagecolorallocate ($this -> Img, 255, 255, 255);
        imagecolortransparent($this -> Img, $background_color);
        imagettftext($this -> Img, 14, 0, 1, 20, imagecolorallocate ($this -> Img, 0, 0, 0), $this -> Ttf, $this -> String );
        $this -> EchoImages();
    }

    private function EchoImages(){
        imagepng($this -> Img);
        imagedestroy($this -> Img);
    }

}

$ImageCode = new ImageCode;
$ImageCode -> Show(130, 35, 'Num.ttf', 'code');
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接