Captcha.php codeNum = $codeNum; $this-width = $width; $this-height = $height; $this-lineFlag = $lineFlag; $this-pixelFlag = $piexFlag; $this-fontSize = $fontSize; $this-string = 'qwertyupmkjnhbgvfcdsxa123456789'; $this-font = dirname(__FILE
codeNum = $codeNum; $this->width = $width; $this->height = $height; $this->lineFlag = $lineFlag; $this->pixelFlag = $piexFlag; $this->fontSize = $fontSize; $this->string = 'qwertyupmkjnhbgvfcdsxa123456789'; $this->font = dirname(__FILE__) . '/fonts/consola.ttf'; } public function createImage() { $this->img = imagecreate($this->width, $this->height); imagecolorallocate($this->img, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100)); } public function createCode() { $strlen = strlen($this->string) - 1; for ($i = 0; $i < $this->codeNum; $i++) { $this->code .= $this->string[mt_rand(0, $strlen)]; } $_SESSION['code'] = $this->code; $diff = $this->width / $this->codeNum; for ($i = 0; $i < $this->codeNum; $i++) { $txtColor = imagecolorallocate($this->img, mt_rand(100, 255), mt_rand(100, 255), mt_rand(100, 255)); imagettftext($this->img, $this->fontSize, mt_rand(-30, 30), $diff*$i + mt_rand(3, 8), mt_rand(20, $this->height - 10), $txtColor, $this->font, $this->code[$i]); } } public function createLines() { for ($i = 0; $i < 4; $i++) { $color = imagecolorallocate($this->img, mt_rand(0, 155), mt_rand(0, 155), mt_rand(0, 155)); imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $color); } } public function createPixel() { for ($i = 0; $i < 100; $i++) { $color = imagecolorallocate($this->img, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imagesetpixel($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), $color); } } public function show() { $this->createImage(); $this->createCode(); if ($this->lineFlag) { $this->createLines(); } if ($this->pixelFlag) { $this->createPixel(); } header('Content-type;image/png'); imagepng($this->img); imagedestroy($this->img); } public function getCode() { return $this->code; } public function getFont() { return $this->font; } } session_start(); $captcha = new Captcha(); $captcha->show();