分享一个生成图片验证码的php类

时间:2017-07-27
验证码这样的功能可以说是无处不在了,本文章向大家分享一个使用PHP来实现验证码功能的类,这里我是将验证码实现抽取到一个类中独立开来,那么后面如果再使用到验证码功能,直接引入该类文件并创建该类的实例,就可以使用验证码了。

验证码的用途就不用多说了,下面就介绍一个PHP的验证码类。

<?php
    session_start();
    Header("Content-type: image/gif");
	
    class SecurityCode
    {
        private $codes = '';
		
        function __construct()
        {
            $code = '0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z';
            $codeArray = explode('-',$code);
            shuffle($codeArray);
            $this->codes = implode('',array_slice($codeArray,0,4));
        }
		
        public function CreateImg()
        {
            $_SESSION['check_pic'] = $this->codes;
            $img = imagecreate(70,25);
            imagecolorallocate($img,222,222,222);
            $testcolor1 = imagecolorallocate($img,255,0,0);
            $testcolor2 = imagecolorallocate($img,51,51,51);
            $testcolor3 = imagecolorallocate($img,0,0,255);
            $testcolor4 = imagecolorallocate($img,255,0,255);
			
            for ($i = 0; $i < 4; $i++)
            {
                imagestring($img,rand(5,6),8 + $i * 15,rand(2,8),$this->codes[$i],rand(1,4));
            }
            imagegif($img);
        }
    }
	
    $code = new SecurityCode();
    $code->CreateImg();
	
	$code = NULL;
?>

封装成类之后,加入了构造函数,使用起来也方便些。你也可以继续完善下这个验证码类,比如加入析构函数,如何更节省内存等等。