画布出现验证码

<?php
/*
 * 验证码类
 */
class Captcha
{
    //成员属性
    private $_width = 100;  //画布默认宽度
    private $_height = 25;  //画布默认的高度
    
    
    //成员方法
    //生成一张图像,并输出到浏览器
    public function makeImage()
    {
        //1. 先创建一个画布(在内存中创建一个图像资源)
        $image = imagecreatetruecolor($this->_width,$this->_height);
        
        //2. 给画布填充颜色,否则默认是黑色的很恐怖    allocate分配
        $color = imagecolorallocate($image, mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
        imagefill($image, 0, 0, $color);
        
        //创建随机的文字
        
        
        
        //4. 直接在浏览器输出这个画布
        header("Content-Type:image/png");
        //生成图像,如果增加第二个参数表示保存到本地
        imagepng($image);
        //5. 销毁内存中图像资源
        imagedestroy($image);
       }
    //产生随机文字的函数
    public function makeCode()
    {
        //随机的文字可能是数字、字母
        //range()会产生一个从a到z的字符的集合(数组)
        $upper_str = range('A','Z');
        $lower_str = range('a','z');
        $num = range(1,9);
        
        //把上面三个数组合并
        $data = array_merge($upper_str,$lower_str,$num);
        //为了让产生的数字更随机,先打乱一下顺序
        shuffle($data);
        
        //从上面数组中随机取出4个
        $randoms = array_rand($data,4);
        
        //通过下标获得对应的字符
        $str = '';
        foreach ($randoms as $v){
            $str .= $data[$v];
        }        
        echo '<pre>';
        var_dump($str);
    }
 
}

$captcha = new Captcha();
//$captcha -> makeImage();
$captcha -> makeCode();


posted @ 2016-12-06 12:36  qinxiaodong  阅读(152)  评论(0编辑  收藏  举报