Heim  >  Artikel  >  Backend-Entwicklung  >  验证码的一个类,怎么就是不出来图片呢

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

WBOY
WBOYOriginal
2016-06-23 14:06:22903Durchsuche

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

<?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);?>


回复讨论(解决方案)

木有人啊

注释掉 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);
无语啊,当时怎么都不行,加了这两行测试,怎么你说过之后,我删掉就又行了呢,搞不懂了

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



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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php 页面跳转后session为空Nächster Artikel:关于rrdtool数据问题