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

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

WBOY
WBOYオリジナル
2016-06-13 12:48:18832ブラウズ

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

<br>
<?php <br />
クラス imageCode{<br />
public $img_width; //検証コード幅<br />
public $img_height; //身長<br />
public $arr_char = array() //認証コードに表示される文字<br />
public $font_size; //フォントサイズ<br />
public $img; //検証コード画像<br />
public $code_result; //セッションに保存される数値または文字列<br />
public $line_count = 7 //ノイズラインの数<br />;
private $str_chars = "0123456789abcdefghjkmnpqrstuvwxyzABCEDFGHJKLMNPQRSTUVWXYZ";//検証コード文字列<br />
<br />
//コンストラクター<br />
function __construct($img_width,$img_height,$font_size,$line_count){ <br />
$this->img_width = $img_width;<br />
$this->img_height = $img_height;<br />
$this->font_size = $font_size;<br />
$this->line_count = $line_count;<br />
}<br />
<br />
//検証コード生成メインメソッド<br />
function createCodeImg(){<br />
$this->createGraphics();
$this->getChars();<br />
$this->setNoiceLine();<br />
<br />
$x = rand(2,5);<br />
$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)));<br />
print_r($arr_X_Y);<br />
for($i = 0;$i<4;$i ){<br />
$text_color = imagecolorallocate($this->img, rand(180,250), rand(180,250), rand(180,250));<br />
imagechar($this->img,$this->font_size,$arr_X_Y[$i][0],$arr_X_Y[$i][1],$this->arr_char[$i],$text_color) ;<br />
}<br />
}<br />
<br />
//製図ボードを作成します <br />
関数 createGraphics(){<br />
header("コンテンツタイプ: image/png");
$this->img = @imagecreatetruecolor($this->img_width, $this->img_height) または die("画像の作成に失敗しました") // 画像を作成します<br />
$background_color = imagecolorallocate($this->img, 250, 250, 250);<br />
imagefill($this->img,0,0,$background_color);<br />
$border_color = imagecolorallocate($this->img,0,0,0); //境界線の色<br />
imagerectangle($this->img,0,0,$this->img_width,$this->img_height,$border_color);<br />
}<br />
<br />
//ノイズラインを描画<br />
関数 setNoiceLine(){<br />
for($i = 0;$i <$this->line_count;$i ){<br />
$x1 = rand(3,20);//開始位置<br />
$y1 = rand(2,$this->img_height);<br />
$x2 = rand($this->img_width-20,$this->img_width-2);//終了位置<br />
$y2 = rand(2,$this->img_height);<br />
$line_color = imagecolorallocate($this->img, rand(180,250), rand(180,250), rand(180,250));<br />
imageline($this->img,$x1,$y1,$x2,$y2,$line_color);
}<br />
}<br />
<br />
//ランダムな文字列またはプラス文字またはマイナス文字を生成します <br />
関数 getChars(){<br />
$strCode = "";<br />
if(rand(0,1) == 1){//文字列型検証コード<br />
for($i = 0;$i <4;$i ){<br />
$this->arr_char[$i] = $this->str_chars[rand(0,56)];<br />
$strCode .= $this->arr_char[$i];<br />
}<br />
$this->code_result = $strCode;<br />
}<br />
else{ //追加および減算型検証コード<br />
$first_num = rand(1,10);<br />
$sec_num = 0;<br />
$result = 0;<br />
$arr_operator = array(" ","-");<br />
$operator = $arr_operater[rand(0,1)];<br />
スイッチ ($operator){<br />
ケース " ":<br />
$sec_num = rand(0,10);<br />
$result = $first_num $second_num;<br />
休憩;<br />
ケース "-":<br />
$second_num = rand(0,$first_num);<br />
$result = $first_num - $second_num;<br />
休憩;<br />
}<br />
$this->arr_char = array($first_num,$operator,$second_num,"="); <br><br>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。