function makeCaptcha() { $imagelength = $this->Length * 25 + 16; $imageheight = 75; $image = imagecreate($imagelength, $imageheight); //$bgcolor = imagecolorallocate($image, 222, 222, 222); $bgcolor = imagecolorallocate($image, 255, 255, 255); $stringcolor = imagecolorallocate($image, 0, 0, 0); $filter = new filters(); $filter->signs($image, $this->getRandFont()); for ($i = 0; $i < strlen($this->CaptchaString); $i++) { imagettftext($image, 25, mt_rand(-15, 15), $i * 25 + 10, mt_rand(30, 70), $stringcolor, $this->getRandFont(), $this->CaptchaString[$i]); } $filter->noise($image, 10); $filter->blur($image, 1); imagepng($image); imagedestroy($image); }
function makeCaptcha() { global $cString, $_CONF, $_TABLES, $LANG_CP00; if ($this->session_id != 0) { $sql = "UPDATE {$_TABLES['cp_sessions']} SET validation='" . $this->getCaptchaString() . "' WHERE session_id='" . DB_escapeString($this->session_id) . "'"; DB_query($sql); } else { CAPTCHA_errorLog("CAPTCHA: No valid session id passed"); exit; } switch ($this->driver) { case 0: case 1: if ($this->gfxformat != 'png' && $this->gfxformat != 'jpg') { header('Content-type: image/gif'); COM_errorLog("CAPTCHA: No valid gfxFormat specified"); $errormgr = new error(); $errormgr->addError(''); $errormgr->displayError(); die; } $header = 'Content-type: image/' . $this->gfxformat; header($header); if ($this->driver == 0) { $imagelength = $this->Length * 25 + 16; $imageheight = 75; $image = imagecreate($imagelength, $imageheight); $bgcolor = imagecolorallocate($image, 255, 255, 255); $stringcolor = imagecolorallocate($image, 0, 0, 0); $filter = new filters(); $filter->signs($image, $this->getRandFont()); for ($i = 0; $i < strlen($this->CaptchaString); $i++) { imagettftext($image, 25, mt_rand(-15, 15), $i * 25 + 10, mt_rand(30, 70), $stringcolor, $this->getRandFont(), $this->CaptchaString[$i]); } switch ($this->gfxformat) { case 'png': imagepng($image); break; case 'jpg': imagejpeg($image); break; } imagedestroy($image); } else { // ImageMagick code originally written by // Thom Skrtich (email : bisohpthom@supertwist.net) // used in SecureImage a CAPTCHA plugin for WordPress. $gravity = 'Center'; # modify the image according to the generated settings $size = rand($this->sizemin, $this->sizemax); $blur = rand($this->blurmin, $this->blurmax); $angle = rand($this->anglemin, $this->anglemax); $swirl = rand($this->swirlmin, $this->swirlmax); $wave = rand($this->wavemin, $this->wavemax); $cString = $this->CaptchaString; $i = strlen($cString); $newString = ''; for ($x = 0; $x < $i; $x++) { $newString .= $cString[$x]; $newString .= ' '; } # prepare our image magick command $cmd = '"' . $this->convertpath . '"'; $cmd .= ' -font "' . $this->getRandFont() . '"'; $cmd .= ' -pointsize ' . $size; $cmd .= ' -gravity "' . $gravity . '"'; $cmd .= ' -annotate 0 "' . $newString . '"'; $cmd .= ' -blur ' . $blur; $cmd .= ' -rotate ' . $angle; $cmd .= ' -swirl ' . $swirl; $cmd .= ' -wave ' . $wave . 'x80'; $cmd .= ' ' . $this->getRandBackground() . ' - '; if (PHP_OS == "WINNT") { $pcmd = 'cmd /c " ' . $cmd . '"'; } else { $pcmd = $cmd; } if ($this->debug) { COM_errorLog("CAPTCHA cmd: " . $pcmd); } passthru($pcmd); } break; case 2: header('Content-type: image/jpeg'); $filename = $cString[$this->CaptchaString] . '.jpg'; $fp = fopen($_CONF['path'] . 'plugins/captcha/images/static/' . $this->imageset . '/' . $filename, 'rb'); if ($fp != NULL) { while (!feof($fp)) { $buf = fgets($fp, 8192); echo $buf; } fclose($fp); } else { COM_errorLog("CAPTCHA: Unable to open static image file"); } break; case 3: case 4: case 5: break; case 6: /* $output = $this->first . ' '.$this->operator . ' ' . $this->second . ' = '; $imagelength = $this->Length * 25 + 16; $imageheight = 75; $im = imagecreate($imagelength, $imageheight); // White background and blue text $bg = imagecolorallocate($im, 255, 255, 255); $textcolor = imagecolorallocate($im, 0, 0, 255); // Write the string at the top left imagestring($im, 5, 35, 15, $output, $textcolor); imagestring($im, 25, 5, 45, $LANG_CP00['captcha_help'], $textcolor); // Output the image header('Content-type: image/png'); imagepng($im); imagedestroy($im); */ $output = $this->first . '' . $this->operator . '' . $this->second . '='; $font = $this->fontpath . 'bluehigl.ttf'; $imagelength = $this->Length * 25 + 16; $imageheight = 75; $image = imagecreate($imagelength, $imageheight); $bgcolor = imagecolorallocate($image, 255, 255, 255); $stringcolor = imagecolorallocate($image, 0, 0, 0); for ($i = 0; $i < strlen($output); $i++) { imagettftext($image, 25, mt_rand(-15, 15), $i * 25 + 10, 45, $stringcolor, $font, $output[$i]); } switch ($this->gfxformat) { case 'png': imagepng($image); break; case 'jpg': imagejpeg($image); break; } imagedestroy($image); break; default: break; } }
function makeCaptcha() { $imagelength = $this->Length * 25 + 16; $imageheight = 75; $image = imagecreate($imagelength, $imageheight); //$bgcolor = imagecolorallocate($image, 222, 222, 222); $bgcolor = imagecolorallocate($image, 255, 255, 255); $stringcolor = imagecolorallocate($image, 0, 0, 0); $filter = new filters(); $funcnumber = rand(0, 1); switch ($funcnumber) { case 0: $randcellno = rand(2, 7); $filter->signs($image, $this->getRandFont(), $randcellno); break; case 1: $randruns = rand(10, 30); $filter->noise($image, $randruns); break; case 2: default: $randblurradius = rand(8, 20); $filter->blur($image, 15); break; } for ($i = 0; $i < strlen($this->CaptchaString); $i++) { imagettftext($image, 25, mt_rand(-15, 15), $i * 25 + 10, mt_rand(30, 70), $stringcolor, $this->getRandFont(), $this->CaptchaString[$i]); } //$filter->noise($image, 10); //$filter->blur($image, 6); $captchaImageFolder = "{$this->sourceFolder}/{$this->uploadFolder}/temp"; // exec('find "'.$captchaImageFolder.'" -maxdepth 1 -type 5 -mmin +60 | xargs -0 /bin/rm -f'); $captchaImageFile = scandir($captchaImageFolder, 1); if (count($captchaImageFile) <= 1) { $captchaImageFile[0] = '000000.png'; } $captchaImageFile = substr($captchaImageFile[0], 0, strrpos($captchaImageFile[0], '.')); $captchaImageFile++; $captchaImageFile = str_pad($captchaImageFile, 6, '0', STR_PAD_LEFT) . '.png'; $this->captchaImageUrl = "{$this->urlRequestRoot}/{$this->cmsFolder}/{$this->uploadFolder}/temp/{$captchaImageFile}"; imagepng($image, $captchaImageFolder . '/' . $captchaImageFile); imagedestroy($image); }