Home > Backend Development > PHP Tutorial > 验证码的一个类,怎么就是不出来图片呢

验证码的一个类,怎么就是不出来图片呢

WBOY
Release: 2016-06-23 14:06:22
Original
933 people have browsed it

自己闲着没事,自定义了一个验证码生成的类,但是不知道为什么,图片就是现实不出来。还请高手指点一下。

<?php class imageCode{	public $img_width;    //验证码宽度	public $img_height;		//高度	public $arr_char = array();  //验证码上显示的字符	public $font_size;         //字体大小	public $img;				//验证码图片	public $code_result;		//要保存在session中的数或者字符串	public $line_count = 7;		//噪音线数量	private $str_chars = "0123456789abcdefghjkmnpqrstuvwxyzABCEDFGHJKLMNPQRSTUVWXYZ";//验证码字符串		//构造函数	function __construct($img_width,$img_height,$font_size,$line_count){    		$this->img_width = $img_width;		$this->img_height = $img_height;		$this->font_size = $font_size;		$this->line_count = $line_count;	}		//验证码生成主方法	function createCodeImg(){		$this->createGraphics();  		$this->getChars();		$this->setNoiceLine();				$x = rand(2,5);		$arr_X_Y = array(array($x,rand(1,3)),array($x+$this->font_size,rand(1,4)),array($x+2*$this->font_size,rand(1,3)),array($x+3*$this->font_size,rand(1,4)));		print_r($arr_X_Y);		for($i = 0;$i< 4;$i++){			$text_color = imagecolorallocate($this->img, rand(180,250), rand(180,250), rand(180,250));			imagechar($this->img,$this->font_size,$arr_X_Y[$i][0],$arr_X_Y[$i][1],$this->arr_char[$i],$text_color); 		}	}     //创建画图板		function createGraphics(){		header("Content-type: image/png"); 		$this->img = @imagecreatetruecolor($this->img_width, $this->img_height) or die("建立图像失败"); //创建图片		$background_color = imagecolorallocate($this->img, 250, 250, 250);		imagefill($this->img,0,0,$background_color);		$border_color = imagecolorallocate($this->img,0,0,0); //边框色		imagerectangle($this->img,0,0,$this->img_width,$this->img_height,$border_color);	}	     //画噪音线	function setNoiceLine(){		for($i = 0;$i < $this->line_count;$i ++){			$x1 = rand(3,20);//开始位置			$y1 = rand(2,$this->img_height);			$x2 = rand($this->img_width-20,$this->img_width-2);//结束位置			$y2 = rand(2,$this->img_height);			$line_color = imagecolorallocate($this->img, rand(180,250), rand(180,250), rand(180,250));			imageline($this->img,$x1,$y1,$x2,$y2,$line_color); 		}	}	//产生随机字符串或者加减字符		function getChars(){		$strCode = "";		if(rand(0,1) == 1){//字符串类型的 验证码			for($i = 0;$i < 4;$i ++){				$this->arr_char[$i] = $this->str_chars[rand(0,56)];				$strCode .= $this->arr_char[$i];			}			$this->code_result = $strCode;		}		else{			//加减类型验证码			$first_num = rand(1,10);			$second_num = 0;			$result = 0;			$arr_operater = array("+","-");			$operater = $arr_operater[rand(0,1)];			switch ($operater){				case "+":					$second_num = rand(0,10);					$result = $first_num + $second_num;					break;				case "-":					$second_num = rand(0,$first_num);					$result = $first_num - $second_num;					break;			}			$this->arr_char = array($first_num,$operater,$second_num,"=");			$this->code_result = $result;		}	}}$YZM = new imageCode(65,27,16,7);$YZM->createCodeImg();echo ($YZM->img_width."-----".$YZM->code_result);imagepng($YZM->img); imagedestroy($YZM->img);?>
Copy after login


回复讨论(解决方案)

木有人啊

注释掉 28 行的 print_r($arr_X_Y);
注释掉 91 行的 echo ($YZM->img_width."-----".$YZM->code_result);

注释掉 28 行的 print_r($arr_X_Y);
注释掉 91 行的 echo ($YZM->img_width."-----".$YZM->code_result);
这两行是我测试的,注释掉也不行

注释掉 28 行的 print_r($arr_X_Y);
注释掉 91 行的 echo ($YZM->img_width."-----".$YZM->code_result);
无语啊,当时怎么都不行,加了这两行测试,怎么你说过之后,我删掉就又行了呢,搞不懂了

呵, 代码有时候就这么神奇, 仔细检查一下,看能不能找到原因 。  



火狐为什么看不到 代码 框里的 左右滚动条

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template