diff options
Diffstat (limited to 'h-source/Library/Image/Gd/Captcha.php')
-rw-r--r-- | h-source/Library/Image/Gd/Captcha.php | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/h-source/Library/Image/Gd/Captcha.php b/h-source/Library/Image/Gd/Captcha.php deleted file mode 100644 index 1e8d706..0000000 --- a/h-source/Library/Image/Gd/Captcha.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -// EasyGiant is a PHP framework for creating and managing dynamic content -// -// Copyright (C) 2009 - 2011 Antonio Gallo -// See COPYRIGHT.txt and LICENSE.txt. -// -// This file is part of EasyGiant -// -// EasyGiant is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// EasyGiant is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with EasyGiant. If not, see <http://www.gnu.org/licenses/>. - -if (!defined('EG')) die('Direct access not allowed!'); - -//class to create a captcha -//you have to call session_start() before to initialize a captcha object -class Image_Gd_Captcha -{ - - private $params = array(); //parameters of the object - private $string = null; //the text string of the captcha - - public function __construct($params = null) - { - $here = realpath('.'); - - $defaultParams = array( - 'boxWidth' => 150, - 'boxHeight' => 100, - 'charNumber' => 6, - 'fontPath' => $here.'/External/Fonts/FreeFont/FreeMono.ttf', - 'undulation' => true, - 'align' => false, - 'charHeight' => 28, - 'sessionKey' => 'captchaString', - ); - - //set the $this->scaffold->params array - if (is_array($params)) - { - foreach ($params as $key => $value) - { - $defaultParams[$key] = $value; - } - } - $this->params = $defaultParams; - - $this->string = generateString($this->params['charNumber']); - } - - public function render() - { - //space among characters - $space = $this->params['boxWidth'] / ($this->params['charNumber']+1); - //create the image box - $img = imagecreatetruecolor($this->params['boxWidth'],$this->params['boxHeight']); - - $background = imagecolorallocate($img,255,255,255); - $border = imagecolorallocate($img,0,0,0); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - $colors[] = imagecolorallocate($img,mt_rand(0,125),mt_rand(0,125),mt_rand(0,125)); - - //create the background - imagefilledrectangle($img,1,1,$this->params['boxWidth']-2,$this->params['boxHeight']-2,$background); - imagerectangle($img,0,0,$this->params['boxWidth']-1,$this->params['boxHeight']-2,$border); - - //set the text - for ($i=0; $i< $this->params['charNumber']; $i++) - { - $color = $colors[$i % count($colors)]; - $char = substr($this->string,$i,1); - $fontPath = $this->params['fontPath']; - $angle = $this->params['undulation'] === false ? 0 : -20+rand(0,40); - $yposFixed = (int)(($this->params['boxHeight'])/2); - $ypos = $this->params['align'] === true ? $yposFixed : $yposFixed + mt_rand(0,10); - $charHeight = $this->params['charHeight']; - imagettftext($img,$charHeight + rand(0,8),$angle,($i+0.3)*$space,$ypos,$color,$fontPath,$char); - } - - $noiseColor = imagecolorallocate($img, mt_rand(125,255), mt_rand(125,255), mt_rand(125,255)); - /* generate random dots in background */ - for( $i=0; $i<($this->params['boxWidth'] * $this->params['boxHeight'])/7; $i++ ) { - imagefilledellipse($img, mt_rand(0,$this->params['boxWidth']), mt_rand(0,$this->params['boxHeight']), 1, 1, $noiseColor); - } - - $_SESSION[$this->params['sessionKey']] = $this->string; - header('Content-Type: image/png'); - imagepng($img); - imagedestroy($img); - } - -}
\ No newline at end of file |