Example #1
0
 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);
 }
Example #2
0
 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;
     }
 }
Example #3
0
 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);
 }