ホームページ > バックエンド開発 > PHPチュートリアル > 確認コードの一種ですが、画像が表示されないのはなぜですか?

確認コードの一種ですが、画像が表示されないのはなぜですか?

WBOY
リリース: 2016-06-23 14:06:22
オリジナル
934 人が閲覧しました

仕方ないので認証コード生成クラスをカスタマイズしたのですが、なぜか画像が出てきません。専門家のアドバイスをお願いします。

<?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);?>
ログイン後にコピー


ディスカッション (解決策) に返信

No one

print_r($arr_X_Y) の 28 行目をコメントアウト
echo ($YZM->img_width."-) の 91 行目をコメントアウト- - --".$YZM->code_result);

print_r($arr_X_Y) の 28 行をコメントアウトします。
echo ($YZM->img_width."-----") の 91 行をコメントアウトします。 $YZM ->code_result);
これらの 2 行は私がテストしたものですが、コメントアウトしても機能しません

print_r($arr_X_Y) の 28 行目をコメントアウトします
echo ($YZM-); の 91 行目をコメントアウトします>img_width."-- ---".$YZM->code_result);
この 2 行のテストを追加したのに、なぜ再び動作するのか、言葉を失いました。削除しましたか? わかりません

はは、コードは時々とても魔法のようです。よく確認して、理由が見つかるかどうかを確認してください。




Firefox ではコード ボックスの左右のスクロール バーが表示されないのはなぜですか

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート