From 4c0128d8401e6d3c84021f8d2b8b1d73c09dedeb Mon Sep 17 00:00:00 2001 From: Cake Date: Thu, 17 Jun 2010 15:14:04 +0900 Subject: [PATCH] =?utf8?q?Revert=20"CAPTCHA=E5=B0=8E=E5=85=A5=E4=BE=8B"?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This reverts commit ecf6ee18d944bb0e68a852775af78306d3bed8df. --- app/controllers/components/captcha.php | 39 -- app/controllers/users_controller.php | 14 +- app/locale/jpn/LC_MESSAGES/default.po | 4 - app/vendors/securimage/securimage.php | 932 ----------------------------- app/views/users/add.ctp | 11 - app/webroot/captcha/elephant.ttf | Bin 51652 -> 0 bytes app/webroot/captcha/gdfonts/automatic.gdf | Bin 61196 -> 0 bytes app/webroot/captcha/gdfonts/bubblebath.gdf | Bin 67516 -> 0 bytes app/webroot/captcha/gdfonts/caveman.gdf | Bin 160540 -> 0 bytes app/webroot/captcha/gdfonts/crass.gdf | Bin 39691 -> 0 bytes app/webroot/captcha/images/audio_icon.gif | Bin 621 -> 0 bytes app/webroot/captcha/images/refresh.gif | Bin 865 -> 0 bytes app/webroot/css/base.css | 5 - 13 files changed, 1 insertion(+), 1004 deletions(-) delete mode 100644 app/controllers/components/captcha.php delete mode 100644 app/vendors/securimage/securimage.php delete mode 100644 app/webroot/captcha/elephant.ttf delete mode 100644 app/webroot/captcha/gdfonts/automatic.gdf delete mode 100644 app/webroot/captcha/gdfonts/bubblebath.gdf delete mode 100644 app/webroot/captcha/gdfonts/caveman.gdf delete mode 100644 app/webroot/captcha/gdfonts/crass.gdf delete mode 100644 app/webroot/captcha/images/audio_icon.gif delete mode 100644 app/webroot/captcha/images/refresh.gif diff --git a/app/controllers/components/captcha.php b/app/controllers/components/captcha.php deleted file mode 100644 index eac0feb..0000000 --- a/app/controllers/components/captcha.php +++ /dev/null @@ -1,39 +0,0 @@ -controller = $controller; - - } - - function render(){ - App::import('Vendor','securimage/securimage'); - $securimage = new Securimage(); - -// $securimage->use_gd_font = true; -// $securimage->gd_font_file = 'captcha/gdfonts/bubblebath.gdf'; - - $securimage->ttf_file = 'captcha/elephant.ttf'; - - $securimage->show(); - - } - - function checkCaptcha($captcha) - { - App::import('Vendor','securimage/securimage'); - $securimage = new Securimage(); - - if ($securimage->check($captcha) == false) { - return false; - } - - return true; - } - -} diff --git a/app/controllers/users_controller.php b/app/controllers/users_controller.php index 5cddf48..cc04f0d 100644 --- a/app/controllers/users_controller.php +++ b/app/controllers/users_controller.php @@ -8,13 +8,10 @@ class UsersController extends ModuleController { 'Time', ); - var $components = array('Captcha'); - /* ACL */ // 追加アクション用 crudMap var $actionMapPlus = array( 'listview' => 'read', - 'captcha' => 'read', 'change_password' => 'update', 'edit_image' => 'update', ); @@ -49,7 +46,6 @@ class UsersController extends ModuleController { $this->AuthPlus->allow('index'); $this->AuthPlus->allow('view'); $this->AuthPlus->allow('add'); //todo:メール認証etc - $this->AuthPlus->allow('captcha'); $this->AuthPlus->allow('logout'); $this->AuthPlus->allow('mobile_login'); $this->AuthPlus->allow('mobile_add'); //todo:メール認証etc @@ -114,11 +110,7 @@ class UsersController extends ModuleController { } if (!empty($this->data)) { - if (!$this->Captcha->checkCaptcha($this->data['User']['captcha'])) { - $this->Session->setFlash(__('LETTERS are wrong.', true)); - } else { - self::_add(); - } + self::_add(); } $this->set('idLength', Configure::read('User.UserId.Length')); @@ -608,9 +600,5 @@ class UsersController extends ModuleController { } } - function captcha(){ - $this->Captcha->render(); - } - } diff --git a/app/locale/jpn/LC_MESSAGES/default.po b/app/locale/jpn/LC_MESSAGES/default.po index 873cdaf..b6d1215 100644 --- a/app/locale/jpn/LC_MESSAGES/default.po +++ b/app/locale/jpn/LC_MESSAGES/default.po @@ -2041,10 +2041,6 @@ msgstr "新しいパスワード" msgid "New Password [confirm]" msgstr "新しいパスワード(確認用)" -#: /views/users/add.ctp: -msgid "Please input the LETTERS of the below image." -msgstr "下の画像の文字を入力してください。" - #: /views/users/admin_delete.ctp:5 msgid "Do you really delete the account?" msgstr "このアカウントを本当に削除しますか?" diff --git a/app/vendors/securimage/securimage.php b/app/vendors/securimage/securimage.php deleted file mode 100644 index 2fa7b45..0000000 --- a/app/vendors/securimage/securimage.php +++ /dev/null @@ -1,932 +0,0 @@ - - * File: securimage.php
- * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or any later version.

- * - * This library 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 - * Lesser General Public License for more details.

- * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

- * - * Any modifications to the library should be indicated clearly in the source code - * to inform users that the changes are not a part of the original software.

- * - * If you found this script useful, please take a quick moment to rate it.
- * http://www.hotscripts.com/rate/49400.html Thanks. - * - * @link http://www.phpcaptcha.org Securimage PHP CAPTCHA - * @link http://www.phpcaptcha.org/latest.zip Download Latest Version - * @link http://www.phpcaptcha.org/Securimage_Docs/ Online Documentation - * @copyright 2007 Drew Phillips - * @author drew010 - * @version 1.0.3.1 (March 24, 2008) - * @package Securimage - * - */ - -/** - ChangeLog - - 1.0.3.1 - - Error reading from wordlist in some cases caused words to be cut off 1 letter short - - 1.0.3 - - Removed shadow_text from code which could cause an undefined property error due to removal from previous version - - 1.0.2 - - Audible CAPTCHA Code wav files - - Create codes from a word list instead of random strings - - 1.0 - - Added the ability to use a selected character set, rather than a-z0-9 only. - - Added the multi-color text option to use different colors for each letter. - - Switched to automatic session handling instead of using files for code storage - - Added GD Font support if ttf support is not available. Can use internal GD fonts or load new ones. - - Added the ability to set line thickness - - Added option for drawing arced lines over letters - - Added ability to choose image type for output - -*/ - -/** - * Output images in JPEG format - */ -define('SI_IMAGE_JPEG', 1); -/** - * Output images in PNG format - */ -define('SI_IMAGE_PNG', 2); -/** - * Output images in GIF format - * Must have GD >= 2.0.28! - */ -define('SI_IMAGE_GIF', 3); - -/** - * Securimage CAPTCHA Class. - * - * @package Securimage - * @subpackage classes - * - */ -class Securimage { - - /** - * The desired width of the CAPTCHA image. - * - * @var int - */ - var $image_width = 175; - - /** - * The desired width of the CAPTCHA image. - * - * @var int - */ - var $image_height = 45; - - /** - * The image format for output.
- * Valid options: SI_IMAGE_PNG, SI_IMAGE_JPG, SI_IMAGE_GIF - * - * @var int - */ - var $image_type = SI_IMAGE_PNG; - - /** - * The length of the code to generate. - * - * @var int - */ - var $code_length = 4; - - /** - * The character set for individual characters in the image.
- * Letters are converted to uppercase.
- * The font must support the letters or there may be problematic substitutions. - * - * @var string - */ - var $charset = 'ABCDEFGHKLMNPRSTUVWYZ23456789'; - //var $charset = '0123456789'; - - /** - * Create codes using this word list - * - * @var string The path to the word list to use for creating CAPTCHA codes - */ - var $wordlist_file = '../words/words.txt'; - - /** - * True to use a word list file instead of a random code - * - * @var bool - */ - var $use_wordlist = true; - - /** - * Whether to use a GD font instead of a TTF font.
- * TTF offers more support and options, but use this if your PHP doesn't support TTF.
- * - * @var boolean - */ - var $use_gd_font = false; - - /** - * The GD font to use.
- * Internal gd fonts can be loaded by their number.
- * Alternatively, a file path can be given and the font will be loaded from file. - * - * @var mixed - */ - var $gd_font_file = 'gdfonts/bubblebath.gdf'; - - /** - * The approximate size of the font in pixels.
- * This does not control the size of the font because that is determined by the GD font itself.
- * This is used to aid the calculations of positioning used by this class.
- * - * @var int - */ - var $gd_font_size = 20; - - // Note: These font options below do not apply if you set $use_gd_font to true with the exception of $text_color - - /** - * The path to the TTF font file to load. - * - * @var string - */ - var $ttf_file = "./elephant.ttf"; - - /** - * The font size.
- * Depending on your version of GD, this should be specified as the pixel size (GD1) or point size (GD2)
- * - * @var int - */ - var $font_size = 24; - - /** - * The minimum angle in degrees, with 0 degrees being left-to-right reading text.
- * Higher values represent a counter-clockwise rotation.
- * For example, a value of 90 would result in bottom-to-top reading text. - * - * @var int - */ - var $text_angle_minimum = -20; - - /** - * The minimum angle in degrees, with 0 degrees being left-to-right reading text.
- * Higher values represent a counter-clockwise rotation.
- * For example, a value of 90 would result in bottom-to-top reading text. - * - * @var int - */ - var $text_angle_maximum = 20; - - /** - * The X-Position on the image where letter drawing will begin.
- * This value is in pixels from the left side of the image. - * - * @var int - */ - var $text_x_start = 8; - - /** - * Letters can be spaced apart at random distances.
- * This is the minimum distance between two letters.
- * This should be at least as wide as a font character.
- * Small values can cause letters to be drawn over eachother.
- * - * @var int - */ - var $text_minimum_distance = 30; - - /** - * Letters can be spaced apart at random distances.
- * This is the maximum distance between two letters.
- * This should be at least as wide as a font character.
- * Small values can cause letters to be drawn over eachother.
- * - * @var int - */ - var $text_maximum_distance = 33; - - /** - * The background color for the image.
- * This should be specified in HTML hex format.
- * Make sure to include the preceding # sign! - * - * @var string - */ - var $image_bg_color = "#e3daed"; - - /** - * The text color to use for drawing characters.
- * This value is ignored if $use_multi_text is set to true.
- * Make sure this contrasts well with the background color.
- * Specify the color in HTML hex format with preceding # sign - * - * @see Securimage::$use_multi_text - * @var string - */ - var $text_color = "#ff0000"; - - /** - * Set to true to use multiple colors for each character. - * - * @see Securimage::$multi_text_color - * @var boolean - */ - var $use_multi_text = true; - - /** - * String of HTML hex colors to use.
- * Separate each possible color with commas.
- * Be sure to precede each value with the # sign. - * - * @var string - */ - var $multi_text_color = "#0a68dd,#f65c47,#8d32fd"; - - /** - * Set to true to make the characters appear transparent. - * - * @see Securimage::$text_transparency_percentage - * @var boolean - */ - var $use_transparent_text = true; - - /** - * The percentage of transparency, 0 to 100.
- * A value of 0 is completely opaque, 100 is completely transparent (invisble) - * - * @see Securimage::$use_transparent_text - * @var int - */ - var $text_transparency_percentage = 15; - - - // Line options - /** - * Draw vertical and horizontal lines on the image. - * - * @see Securimage::$line_color - * @see Securimage::$line_distance - * @see Securimage::$line_thickness - * @see Securimage::$draw_lines_over_text - * @var boolean - */ - var $draw_lines = true; - - /** - * The color of the lines drawn on the image.
- * Use HTML hex format with preceding # sign. - * - * @see Securimage::$draw_lines - * @var string - */ - var $line_color = "#80BFFF"; - - /** - * How far apart to space the lines from eachother in pixels. - * - * @see Securimage::$draw_lines - * @var int - */ - var $line_distance = 5; - - /** - * How thick to draw the lines in pixels.
- * 1-3 is ideal depending on distance - * - * @see Securimage::$draw_lines - * @see Securimage::$line_distance - * @var int - */ - var $line_thickness = 1; - - /** - * Set to true to draw angled lines on the image in addition to the horizontal and vertical lines. - * - * @see Securimage::$draw_lines - * @var boolean - */ - var $draw_angled_lines = false; - - /** - * Draw the lines over the text.
- * If fales lines will be drawn before putting the text on the image.
- * This can make the image hard for humans to read depending on the line thickness and distance. - * - * @var boolean - */ - var $draw_lines_over_text = false; - - /** - * For added security, it is a good idea to draw arced lines over the letters to make it harder for bots to segment the letters.
- * Two arced lines will be drawn over the text on each side of the image.
- * This is currently expirimental and may be off in certain configurations. - * - * @var boolean - */ - var $arc_linethrough = true; - - /** - * The colors or color of the arced lines.
- * Use HTML hex notation with preceding # sign, and separate each value with a comma.
- * This should be similar to your font color for single color images. - * - * @var string - */ - var $arc_line_colors = "#8080ff"; - - /** - * Full path to the WAV files to use to make the audio files, include trailing /.
- * Name Files [A-Z0-9].wav - * - * @since 1.0.1 - * @var string - */ - var $audio_path = './audio/'; - - - //END USER CONFIGURATION - //There should be no need to edit below unless you really know what you are doing. - - /** - * The gd image resource. - * - * @access private - * @var resource - */ - var $im; - - /** - * The background image resource - * - * @access private - * @var resource - */ - var $bgimg; - - /** - * The code generated by the script - * - * @access private - * @var string - */ - var $code; - - /** - * The code that was entered by the user - * - * @access private - * @var string - */ - var $code_entered; - - /** - * Whether or not the correct code was entered - * - * @access private - * @var boolean - */ - var $correct_code; - - /** - * Class constructor.
- * Because the class uses sessions, this will attempt to start a session if there is no previous one.
- * If you do not start a session before calling the class, the constructor must be called before any - * output is sent to the browser. - * - * - * $securimage = new Securimage(); - * - * - */ - function Securimage() - { - if ( session_id() == '' ) { // no session has been started yet, which is needed for validation - session_start(); - } - } - - /** - * Generate a code and output the image to the browser. - * - * - * show('bg.jpg'); - * ?> - * - * - * @param string $background_image The path to an image to use as the background for the CAPTCHA - */ - function show($background_image = "") - { - if($background_image != "" && is_readable($background_image)) { - $this->bgimg = $background_image; - } - - $this->doImage(); - } - - /** - * Validate the code entered by the user. - * - * - * $code = $_POST['code']; - * if ($securimage->check($code) == false) { - * die("Sorry, the code entered did not match."); - * } else { - * $valid = true; - * } - * - * @param string $code The code the user entered - * @return boolean true if the code was correct, false if not - */ - function check($code) - { - $this->code_entered = $code; - $this->validate(); - return $this->correct_code; - } - - /** - * Generate and output the image - * - * @access private - * - */ - function doImage() - { - if($this->use_transparent_text == true || $this->bgimg != "") { - $this->im = imagecreatetruecolor($this->image_width, $this->image_height); - $bgcolor = imagecolorallocate($this->im, hexdec(substr($this->image_bg_color, 1, 2)), hexdec(substr($this->image_bg_color, 3, 2)), hexdec(substr($this->image_bg_color, 5, 2))); - imagefilledrectangle($this->im, 0, 0, imagesx($this->im), imagesy($this->im), $bgcolor); - } else { //no transparency - $this->im = imagecreate($this->image_width, $this->image_height); - $bgcolor = imagecolorallocate($this->im, hexdec(substr($this->image_bg_color, 1, 2)), hexdec(substr($this->image_bg_color, 3, 2)), hexdec(substr($this->image_bg_color, 5, 2))); - } - - if($this->bgimg != "") { $this->setBackground(); } - - $this->createCode(); - - if (!$this->draw_lines_over_text && $this->draw_lines) $this->drawLines(); - - $this->drawWord(); - - if ($this->arc_linethrough == true) $this->arcLines(); - - if ($this->draw_lines_over_text && $this->draw_lines) $this->drawLines(); - - $this->output(); - - } - - /** - * Set the background of the CAPTCHA image - * - * @access private - * - */ - function setBackground() - { - $dat = @getimagesize($this->bgimg); - if($dat == false) { return; } - - switch($dat[2]) { - case 1: $newim = @imagecreatefromgif($this->bgimg); break; - case 2: $newim = @imagecreatefromjpeg($this->bgimg); break; - case 3: $newim = @imagecreatefrompng($this->bgimg); break; - case 15: $newim = @imagecreatefromwbmp($this->bgimg); break; - case 16: $newim = @imagecreatefromxbm($this->bgimg); break; - default: return; - } - - if(!$newim) return; - - imagecopy($this->im, $newim, 0, 0, 0, 0, $this->image_width, $this->image_height); - } - - /** - * Draw arced lines over the text - * - * @access private - * - */ - function arcLines() - { - $colors = explode(',', $this->arc_line_colors); - imagesetthickness($this->im, 3); - - $color = $colors[rand(0, sizeof($colors) - 1)]; - $linecolor = imagecolorallocate($this->im, hexdec(substr($color, 1, 2)), hexdec(substr($color, 3, 2)), hexdec(substr($color, 5, 2))); - - $xpos = $this->text_x_start + ($this->font_size * 2) + rand(-5, 5); - $width = $this->image_width / 2.66 + rand(3, 10); - $height = $this->font_size * 2.14 - rand(3, 10); - - if ( rand(0,100) % 2 == 0 ) { - $start = rand(0,66); - $ypos = $this->image_height / 2 - rand(5, 15); - $xpos += rand(5, 15); - } else { - $start = rand(180, 246); - $ypos = $this->image_height / 2 + rand(5, 15); - } - - $end = $start + rand(75, 110); - - imagearc($this->im, $xpos, $ypos, $width, $height, $start, $end, $linecolor); - - $color = $colors[rand(0, sizeof($colors) - 1)]; - $linecolor = imagecolorallocate($this->im, hexdec(substr($color, 1, 2)), hexdec(substr($color, 3, 2)), hexdec(substr($color, 5, 2))); - - if ( rand(1,75) % 2 == 0 ) { - $start = rand(45, 111); - $ypos = $this->image_height / 2 - rand(5, 15); - $xpos += rand(5, 15); - } else { - $start = rand(200, 250); - $ypos = $this->image_height / 2 + rand(5, 15); - } - - $end = $start + rand(75, 100); - - imagearc($this->im, $this->image_width * .75, $ypos, $width, $height, $start, $end, $linecolor); - } - - /** - * Draw lines on the image - * - * @access private - * - */ - function drawLines() - { - $linecolor = imagecolorallocate($this->im, hexdec(substr($this->line_color, 1, 2)), hexdec(substr($this->line_color, 3, 2)), hexdec(substr($this->line_color, 5, 2))); - imagesetthickness($this->im, $this->line_thickness); - - //vertical lines - for($x = 1; $x < $this->image_width; $x += $this->line_distance) { - imageline($this->im, $x, 0, $x, $this->image_height, $linecolor); - } - - //horizontal lines - for($y = 11; $y < $this->image_height; $y += $this->line_distance) { - imageline($this->im, 0, $y, $this->image_width, $y, $linecolor); - } - - if ($this->draw_angled_lines == true) { - for ($x = -($this->image_height); $x < $this->image_width; $x += $this->line_distance) { - imageline($this->im, $x, 0, $x + $this->image_height, $this->image_height, $linecolor); - } - - for ($x = $this->image_width + $this->image_height; $x > 0; $x -= $this->line_distance) { - imageline($this->im, $x, 0, $x - $this->image_height, $this->image_height, $linecolor); - } - } - } - - /** - * Draw the CAPTCHA code over the image - * - * @access private - * - */ - function drawWord() - { - if ($this->use_gd_font == true) { - if (!is_int($this->gd_font_file)) { //is a file name - $font = @imageloadfont($this->gd_font_file); - if ($font == false) { - trigger_error("Failed to load GD Font file {$this->gd_font_file} ", E_USER_WARNING); - return; - } - } else { //gd font identifier - $font = $this->gd_font_file; - } - - $color = imagecolorallocate($this->im, hexdec(substr($this->text_color, 1, 2)), hexdec(substr($this->text_color, 3, 2)), hexdec(substr($this->text_color, 5, 2))); - imagestring($this->im, $font, $this->text_x_start, ($this->image_height / 2) - ($this->gd_font_size / 2), $this->code, $color); - - } else { //ttf font - if($this->use_transparent_text == true) { - $alpha = intval($this->text_transparency_percentage / 100 * 127); - $font_color = imagecolorallocatealpha($this->im, hexdec(substr($this->text_color, 1, 2)), hexdec(substr($this->text_color, 3, 2)), hexdec(substr($this->text_color, 5, 2)), $alpha); - } else { //no transparency - $font_color = imagecolorallocate($this->im, hexdec(substr($this->text_color, 1, 2)), hexdec(substr($this->text_color, 3, 2)), hexdec(substr($this->text_color, 5, 2))); - } - - $x = $this->text_x_start; - $strlen = strlen($this->code); - $y_min = ($this->image_height / 2) + ($this->font_size / 2) - 2; - $y_max = ($this->image_height / 2) + ($this->font_size / 2) + 2; - $colors = explode(',', $this->multi_text_color); - - for($i = 0; $i < $strlen; ++$i) { - $angle = rand($this->text_angle_minimum, $this->text_angle_maximum); - $y = rand($y_min, $y_max); - if ($this->use_multi_text == true) { - $idx = rand(0, sizeof($colors) - 1); - $r = substr($colors[$idx], 1, 2); - $g = substr($colors[$idx], 3, 2); - $b = substr($colors[$idx], 5, 2); - if($this->use_transparent_text == true) { - $font_color = imagecolorallocatealpha($this->im, "0x$r", "0x$g", "0x$b", $alpha); - } else { - $font_color = imagecolorallocate($this->im, "0x$r", "0x$g", "0x$b"); - } - } - @imagettftext($this->im, $this->font_size, $angle, $x, $y, $font_color, $this->ttf_file, $this->code{$i}); - - $x += rand($this->text_minimum_distance, $this->text_maximum_distance); - } //for loop - } //else ttf font - } //function - - /** - * Create a code and save to the session - * - * @since 1.0.1 - * - */ - function createCode() - { - $this->code = false; - - if ($this->use_wordlist && is_readable($this->wordlist_file)) { - $this->code = $this->readCodeFromFile(); - } - - if ($this->code == false) { - $this->code = $this->generateCode($this->code_length); - } - - $this->saveData(); - } - - /** - * Generate a code - * - * @access private - * @param int $len The code length - * @return string - */ - function generateCode($len) - { - $code = ''; - - for($i = 1, $cslen = strlen($this->charset); $i <= $len; ++$i) { - $code .= strtoupper( $this->charset{rand(0, $cslen - 1)} ); - } - return $code; - } - - /** - * Reads a word list file to get a code - * - * @access private - * @since 1.0.2 - * @return mixed false on failure, a word on success - */ - function readCodeFromFile() - { - $fp = @fopen($this->wordlist_file, 'rb'); - if (!$fp) return false; - - $fsize = filesize($this->wordlist_file); - if ($fsize < 32) return false; // too small of a list to be effective - - if ($fsize < 128) { - $max = $fsize; // still pretty small but changes the range of seeking - } else { - $max = 128; - } - - fseek($fp, rand(0, $fsize - $max), SEEK_SET); - $data = fread($fp, 128); // read a random 128 bytes from file - fclose($fp); - $data = preg_replace("/\r?\n/", "\n", $data); - - $start = strpos($data, "\n", rand(0, 100)) + 1; // random start position - $end = strpos($data, "\n", $start); // find end of word - - return strtolower(substr($data, $start, $end - $start)); // return substring in 128 bytes - } - - /** - * Output image to the browser - * - * @access private - * - */ - function output() - { - header("Expires: Sun, 1 Jan 2000 12:00:00 GMT"); - header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); - header("Cache-Control: no-store, no-cache, must-revalidate"); - header("Cache-Control: post-check=0, pre-check=0", false); - header("Pragma: no-cache"); - - switch($this->image_type) - { - case SI_IMAGE_JPEG: - header("Content-Type: image/jpeg"); - imagejpeg($this->im, null, 90); - break; - - case SI_IMAGE_GIF: - header("Content-Type: image/gif"); - imagegif($this->im); - break; - - default: - header("Content-Type: image/png"); - imagepng($this->im); - break; - } - - imagedestroy($this->im); - } - - /** - * Get WAV file data of the spoken code.
- * This is appropriate for output to the browser as audio/x-wav - * - * @since 1.0.1 - * @return string WAV data - * - */ - function getAudibleCode() - { - $letters = array(); - $code = $this->getCode(); - - if ($code == '') { - $this->createCode(); - $code = $this->getCode(); - } - - for($i = 0; $i < strlen($code); ++$i) { - $letters[] = $code{$i}; - } - - return $this->generateWAV($letters); - } - - /** - * Save the code in the session - * - * @access private - * - */ - function saveData() - { - $_SESSION['securimage_code_value'] = strtolower($this->code); - } - - /** - * Validate the code to the user code - * - * @access private - * - */ - function validate() - { - if ( isset($_SESSION['securimage_code_value']) && !empty($_SESSION['securimage_code_value']) ) { - if ( $_SESSION['securimage_code_value'] == strtolower(trim($this->code_entered)) ) { - $this->correct_code = true; - $_SESSION['securimage_code_value'] = ''; - } else { - $this->correct_code = false; - } - } else { - $this->correct_code = false; - } - } - - /** - * Get the captcha code - * - * @since 1.0.1 - * @return string - */ - function getCode() - { - if (isset($_SESSION['securimage_code_value']) && !empty($_SESSION['securimage_code_value'])) { - return $_SESSION['securimage_code_value']; - } else { - return ''; - } - } - - /** - * Check if the user entered code was correct - * - * @access private - * @return boolean - */ - function checkCode() - { - return $this->correct_code; - } - - /** - * Generate a wav file by concatenating individual files - * @since 1.0.1 - * @access private - * @param array $letters Array of letters to build a file from - * @return string WAV file data - */ - function generateWAV($letters) - { - $first = true; // use first file to write the header... - $data_len = 0; - $files = array(); - $out_data = ''; - - foreach ($letters as $letter) { - $filename = $this->audio_path . strtoupper($letter) . '.wav'; - - $fp = fopen($filename, 'rb'); - - $file = array(); - - $data = fread($fp, filesize($filename)); // read file in - - $header = substr($data, 0, 36); - $body = substr($data, 44); - - - $data = unpack('NChunkID/VChunkSize/NFormat/NSubChunk1ID/VSubChunk1Size/vAudioFormat/vNumChannels/VSampleRate/VByteRate/vBlockAlign/vBitsPerSample', $header); - - $file['sub_chunk1_id'] = $data['SubChunk1ID']; - $file['bits_per_sample'] = $data['BitsPerSample']; - $file['channels'] = $data['NumChannels']; - $file['format'] = $data['AudioFormat']; - $file['sample_rate'] = $data['SampleRate']; - $file['size'] = $data['ChunkSize'] + 8; - $file['data'] = $body; - - if ( ($p = strpos($file['data'], 'LIST')) !== false) { - // If the LIST data is not at the end of the file, this will probably break your sound file - $info = substr($file['data'], $p + 4, 8); - $data = unpack('Vlength/Vjunk', $info); - $file['data'] = substr($file['data'], 0, $p); - $file['size'] = $file['size'] - (strlen($file['data']) - $p); - } - - $files[] = $file; - $data = null; - $header = null; - $body = null; - - $data_len += strlen($file['data']); - - fclose($fp); - } - - $out_data = ''; - for($i = 0; $i < sizeof($files); ++$i) { - if ($i == 0) { // output header - $out_data .= pack('C4VC8', ord('R'), ord('I'), ord('F'), ord('F'), $data_len + 36, ord('W'), ord('A'), ord('V'), ord('E'), ord('f'), ord('m'), ord('t'), ord(' ')); - - $out_data .= pack('VvvVVvv', - 16, - $files[$i]['format'], - $files[$i]['channels'], - $files[$i]['sample_rate'], - $files[$i]['sample_rate'] * (($files[$i]['bits_per_sample'] * $files[$i]['channels']) / 8), - ($files[$i]['bits_per_sample'] * $files[$i]['channels']) / 8, - $files[$i]['bits_per_sample'] ); - - $out_data .= pack('C4', ord('d'), ord('a'), ord('t'), ord('a')); - - $out_data .= pack('V', $data_len); - } - - $out_data .= $files[$i]['data']; - } - - return $out_data; - } -} /* class Securimage */ - -?> diff --git a/app/views/users/add.ctp b/app/views/users/add.ctp index 3d7acbe..bbf67bb 100644 --- a/app/views/users/add.ctp +++ b/app/views/users/add.ctp @@ -31,17 +31,6 @@ 'maxlength' => $passwordLength['max'], ) ); - - echo $form->input('captcha', array( - 'type' => 'text', - 'label' => __('Please input the LETTERS of the below image.', true), - 'after' => $html->tag( - 'div', - $html->image('/users/captcha?r='.rand()), - array('class' => 'captchaImage') - ) - )); - ?> end('Submit');?> diff --git a/app/webroot/captcha/elephant.ttf b/app/webroot/captcha/elephant.ttf deleted file mode 100644 index 024b076e5f0efdaa91bfc54ea520e928aee9c52d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51652 zcmbTfcYq{inLqx%Roz`()m_y&r|O(@nx0s*ld5KRc6T-}uq?Z5VqpV$$x(7rQBV$0 zi6TlcfQp9!M34m(#5027t9Rb1XE;5T?fE@#Rrl=d-rYaH+3A_?u6L^6=XpO*e%^Nx zMhIEZm54@%Cf6x5fB5*xPayQUR}pgl_v&@!+Nq(#H^Yec;IZ-a{o4k3q-G}zc74Z7U@H(+~|9OYopY{F}p%1`I`tCD#opa#6KRrw>4xYY!-I3b)2tBwG=J4A7?S~K17g9qAJsgBT5D#qMzw76}{qg~LJ&cg)?}rYa zd){MHkLnS6dH}}%>Cid54t@OYPb~s{1sH!X!uVhD9Y~Li^tJfw@D9>`!+R%T7(r32 zj@9cankJXX_5RmHYC=R368}NbU+?}EE`A@^MEHpQbwu@^JK^u(UF?Sk@TEThle7%JdsSLGud3eP%M=z)mpvLY_$hE zgG0k3qhr$eiiydo=^0s>om)A-YW13hwd>Yz*tlu)mXl6CW$UTiPTP)loW66{?mc_Y z*mvex`wtvEboM#to_GEQ7aqRo;!7^Q?D8wFyz1&}u6^Hi*WYmCO*h|i>uu=vJJ9

Y8CgV+bD#gh&!2hri(mTk zb6@#q^!!)9_VsVP@ZvXL`qs;@eEZcSuf6`pcfR}PTi<°9vO4*wDEwgPyk2l_8Z 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 z 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 D_wy^5 diff --git a/app/webroot/captcha/gdfonts/automatic.gdf b/app/webroot/captcha/gdfonts/automatic.gdf deleted file mode 100644 index 3eee7068f3d178d9fcae61543edd388f2090b8a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61196 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 diff --git a/app/webroot/captcha/gdfonts/bubblebath.gdf b/app/webroot/captcha/gdfonts/bubblebath.gdf deleted file mode 100644 index 5dc6feab2f10aeb70130606b05a762f6a6dfb7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67516 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 a!ZR})@M-1LH#Ulyxt>$vbUwB6BKBV;AyU== diff --git a/app/webroot/captcha/gdfonts/caveman.gdf b/app/webroot/captcha/gdfonts/caveman.gdf deleted file mode 100644 index 4f72cdbb2e65547549315d4152a5f6f79ed889f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160540 zcmeI3Te4(1j$ONFqHj$}^Ph+C+IW-4BPvU6rlMP>69g7EKsb-z$ZL`R=fD2zzy25f z`@ij9THfnT;7#C7;7#C7;7#D)Jc0kV*H;lAgr9G-Tc4fyE4Nu2tVLBUKZ} zlPl~>ZmOISFygth@+tZ8okc_m+fWSLS?FTmTp3H&?(+@_BNxo!F= z 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 diff --git a/app/webroot/captcha/gdfonts/crass.gdf b/app/webroot/captcha/gdfonts/crass.gdf deleted file mode 100644 index 73420a98d08009cb0ebb079be8e55f7304c9c208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39691 zcmeI4VRqfR4TO_bbQ^CU-T!_{3^2d|qOPw~J5uuGb1DKKhu{E`)8qc=e}DY=@z46t zf8sxD!Ozd1Yr!KxP{(cKr~N?fs~-SOYyp0N58=A0N>*HvoyaVMtk{E|y-=sCsx6V+ z=wZmMV4g%`S)-Mz)_g_27Pzd3kFfHaMQCs5+Bb&V&#CROoft*_H5k)+zxj>w5)@y3 zzuRBqc$;jHYaC&URo*_o1n&16&c2nsdQ0bpxWJ*|KMe@QM2Gev{d>ikZtN}{PtjX24EISqf{Y4!0;x{*od=86mhUST} ztY3nq-bJCckw57n34;Fv=g|tRWMvs8&cL^*Hr&odcHmKQ%0Gd54@%datk`cP?f->= zuMk(}ei&Ffi+Bg={np`-eYEb8L_ZYhFQ5-4Mp%M2fQ2{BcX0|5Td;m&gCQ6m*m!}( zG*vLmo4it1;YHq%i$0Wyz)r+HgXWhK+g|%lPdDbaa}KBNL>n%zHcoH~Vn6c;9y}*< zi+sHn^O3)QFlFz`a4cYwa@)CxB-FES;`ky}jVfVqaT+OSM{%lCY#KjWkyl_r;S$#6 zp*~iD+OdamX(d{3ZCYv?uA#rr62>?gH)fEw%PJ^1x3LF2qBd?nCzW|wm2t^>nhJ@^ zg}=mcw5qteJ*{{HS&>xsMQq{vF;NDL4>UF?wl#meh+L98Pw-6OnZPrFX9CXzo(Vh? zcqZ^n;F-WPfoB5G1pW;Z;NRDySN(Haw_eCq#`q}DKiets6@Qu^FRj1*RUTDmapqiE zIsWY5W25rF3q%Z9n3BN!-!k@?6xUZ$k!|$Mo!;bW*4QB|c@C^xvGAAp(7CHmuwQvn zTc#yf3XK`(4cuy=I>lwKQAJ=Z>%k&k{6HH{Enj!kDsG^%n?`PN_@wjRfKdp!q9xE1 z>^;jAAU;l_6|C*=#-rzBc7S0lTwUHLa<>O>#KW~Nco{SojB+T&KkE0%zlQTVn}>HWOlbJ$szg zszd>=C>c2mGmrH{j7wOr)F+r9l2!*{^$;o!u;&-N;jd=C5gQHgJ&l8U~0CcOGCYiqnrJ-BAU=sRb^JMOWrPIpH3 zcu)C{fX?kg+~lQ!zu3S(p2OX zQ6g)@k4PdkER?YgdW#KuDJvfdAaLxt#*5st?w1q4p@rgp@BGxKjg5{e0X3XR( zS3awDeU|Ao?N;YC0lS6S%~tPX_7Y7RZvA))s=VRq)Uh?6k#%25MT&Q7u+uB8s{eRJ zSCg%^ut4I5EOGU3#fQr-1Q>I@MRyW2S&KR|Y9N-_0wpdzFeDZEQEH@&gj)W~Ft1eW zQd~kPylta-uy~`@QCDXdtAbXMaY}8W7l+;)da2ggjAP-dmUcQ$y<=+-h1h9f@V77u ztOvz$@-OmeDvo`0B@zk$Hg)x*P1Y~FQT-4j9TfUCxURKH#y=4p z>Ydi!LuM9a#}Z3eL-RpJSEk@eiG`|sj~gxdIo64q$_)6kb^`m$*x*8lD1RTbYd!I~ zDthvoxcv5LWo{@jg2Xv(kQC)N;=+_uFfgkm9+x8JS@|wt&A7Xar3@#oR|N5>X9pVh z3J3gN6+e9NlDJpdU`N+KF_MkH^*m^T#e1tE9F*rLChs*?cDS#(>GGXD zRM?cEJzJ|v-j;#wA%W_M{j73}Sy4iw>sK*lUTJn8diOA`;stn8&Y3Lmpo?b>1npsB z+Ng~^#oH(mqfd!XYFvTo|I!u1<145)q1fW^7}zp|4Nn@IL;J^4?>(DrBPps_DDfH_ z1`vZx4EQ{r2|N>cCh$z)nZPrFX9CXzo(Vh?cqZ_-PQd;M+VqCMjZXOcc=H!ME<0Wd z6UR&4+muIsg2$z)$^ibE*(wu=7_cxUfjO`}CT-XF-|98FCMtY~2u-RH_X^C;ZCkPM zmpG5HzN=5LUwKlS74j_9LdBrc{(1Cw99N~Os1599vJy1TszwYYaBADEgwmm+`^Da# zyals}_I(w{Xk53k=i}I8KP(f>628MH?_(b8cjM7DZWV_sEJNg2ixXpHg)zc)*tV;N zMaU1dYp%-N?Q|SX*kcJzmMfI6=p16;yu<@LSVCBDz$3b4Szf#5Jw$Z@G#5F&I zNlTp#-YxJxU|c);LVW1hYoB4aQoEu45?ob1dhKMdb|dogn?ZhH?Tc87tmWz`lJr)A znLQY6zCUbdsn3fXn)TXecvX`5^})&+HTW(TorkZTO!;@J=UtcPKL7R>mY>zWxr!wW z+DwSCI^W}@{S~uBl$6SyAlr-a0lONP&`POKFu$)l8+X=8mv}`~35D<%IK?YiGD~Br zoxla|6j^WXr=pctQqgtTJsg}Ec>ez(zU6Cbv#uK+T(e;GoipJb_gFvO>CW~laz|XY zDq23P<%WwNv9;GJ%TzH=0Jyl~SCHa^?BL4M*&jf=|%`|H(L=`*qC`l(rY z2KWZ9bJs@Fz%s&)xVks=WZ@A*&~S>ox-=EFf`Q>jB!Y#qwhelV4SFf@4G0{2u5s+T zgL(m05_QN#O%+!wYTGN1#qA^prP`BwJl(IFX3QP-F!%wt&ZD^{%HapfGBF{=HlQ=? zJk=o!ec|MZEXcC)eqxiS*NSt6vyAXmWdMC<7L>e_#tX+~cU;g$wNhhQk@jdC(NJsB zsTBauN+OD5R)HlLhFldQ`A#g?z!ltu!82DrtL7@pbefIIR}weu2hQs+UcHOiOEhV? z_2Vh1@`m$+$VnmC;1bvnyhsF7{rbw9p*krVwetq<9Dr|Jfa&NC>-Kw%nXE-E8Z{70 zY=IJ&9vG5}{3tb2MnWzBWtdm0btx_(6yCPcJXpNZ>Zq%;i&a6Z$T+38(2GNF4!uwDS9r3{S%P2hTro`VxtRf1A4c z(I)Gc-Kc(ukq!#|8eG@fB;%h54)soJ?;$e_vSW!QtfBd!qAOGIq{Kp1zQ>K0{2c2< zO=SlBSv!IKWo&REM3lde*|nbdTopZeOl5F>Tbwp5kqkh|#CSCpE6X^ndA!;qevJn^0_VcnoYA h!iFb}&7u8csrQ~uwviN7ER=YS4FiZlCI-Cx@ju->A5s7S diff --git a/app/webroot/captcha/images/audio_icon.gif b/app/webroot/captcha/images/audio_icon.gif deleted file mode 100644 index beafd518270f15bd62e15276ede1c5daab7d8892..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 621 zcmZ?wbhEHb6k`x!_^QpIqpNFdY;5n~;OXV*;u07d77`tuk`SMg4g%!``GsX=6`7eG zdAYMHE8DB9Cl}-|Dk@sq*4En8JY(Xd{;AWZcXzLtI%VaIncG&ZSh;fLjtv{u?cBL* z-n?TgR~%Wn^4iXwNA~QwzIDrk0|)jWJ$mfyncG*dUO#s1;k9c|Uc7kq`}ZFcBNGM+ zfZ|UUMg|6;KR{-H{KUZa&ta<9(x80Hu6g9xjs6OJx{*}F1irQnIh u7dv#M;XVU}-70|>#f(4=q5()DsoH-GNgp`0mIfgL4N0Ze0AvFtqn diff --git a/app/webroot/captcha/images/refresh.gif b/app/webroot/captcha/images/refresh.gif deleted file mode 100644 index a10b24717f9d5be6af61c1c3dd646f6bf0e99ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 865 zcmZ?wbhEHb6k`x!_!h>%CaB6Ptji&y#V=p2w7!KzXt05lpspEM3`BTH%UXDah6V>n8Og~tI6xGK`HJXUg#tx`gY`5u<@9|a z${kJRgF-nOg9F(4R6=DG>_MWTp(f&{p)Bf_0oq%;a?r#XtQw|MwS1<*8Ce%$(jz?HI zI5;#YDAa~u-UDKWucr+83P4BI7J_Vwa^hB@P%i@|8bZRnos_J^l|21I!{Ff=78Vo= aM8QB^K+!<3$zTGg0-_A8G%&D{!5RQ?yDO0Z diff --git a/app/webroot/css/base.css b/app/webroot/css/base.css index 86d58c8..df625a2 100644 --- a/app/webroot/css/base.css +++ b/app/webroot/css/base.css @@ -557,9 +557,4 @@ div.noticeNarrow { .highlight { background-color: #ffff66; font-weight: bold; -} - -/* Capthca */ -div.captchaImage { - margin-top: 10px; } \ No newline at end of file -- 2.11.0