From c77011951175c8f2ab6a21d613182d09890d71fe Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 9 Jun 2012 22:30:09 +0200 Subject: [PATCH] display captcha (live) --- htdocs/application/config/routes.php | 1 + htdocs/application/controllers/main.php | 4 +- htdocs/application/helpers/captcha_helper.php | 352 +++++++++--------- .../application/views/defaults/paste_form.php | 4 +- htdocs/application/views/view/captcha.php | 3 +- 5 files changed, 188 insertions(+), 176 deletions(-) diff --git a/htdocs/application/config/routes.php b/htdocs/application/config/routes.php index f007610..5e8a6c5 100644 --- a/htdocs/application/config/routes.php +++ b/htdocs/application/config/routes.php @@ -47,6 +47,7 @@ $route['view/raw/:any'] = 'main/raw'; $route['view/rss/:any'] = 'main/rss'; $route['view/embed/:any'] = 'main/embed'; $route['view/download/:any'] = 'main/download'; +$route['view/captcha'] = 'main/captcha'; $route['view/:any'] = 'main/view'; $route['lists'] = 'main/lists'; $route['lists/rss'] = 'main/lists/rss'; diff --git a/htdocs/application/controllers/main.php b/htdocs/application/controllers/main.php index 86e58e7..d057180 100755 --- a/htdocs/application/controllers/main.php +++ b/htdocs/application/controllers/main.php @@ -13,6 +13,7 @@ * - view() * - cron() * - about() + * - captcha() * - _valid_lang() * - get_cm_js() * - error_404() @@ -386,7 +387,8 @@ class Main extends CI_Controller function captcha() { - $this->load->view('captcha'); + $this->load->helper('captcha'); + $this->load->view('view/captcha'); } function _valid_lang($lang) diff --git a/htdocs/application/helpers/captcha_helper.php b/htdocs/application/helpers/captcha_helper.php index f2c59c1..0d0c454 100644 --- a/htdocs/application/helpers/captcha_helper.php +++ b/htdocs/application/helpers/captcha_helper.php @@ -1,4 +1,13 @@ - '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200); - foreach ($defaults as $key => $val) +if (!function_exists('create_captcha')) +{ + + function create_captcha($data = '', $img_path = '', $img_url = '', $font_path = '') + { + $defaults = array( + 'word' => '', + 'img_path' => '', + 'img_url' => '', + 'img_width' => '150', + 'img_height' => '30', + 'font_path' => '', + 'expiration' => 7200 + ); + foreach ($defaults as $key => $val) { - if ( ! is_array($data)) + + if (!is_array($data)) { - if ( ! isset($$key) OR $$key == '') + + if (!isset($$key) OR $$key == '') { $$key = $val; } } else { - $$key = ( ! isset($data[$key])) ? $val : $data[$key]; + $$key = (!isset($data[$key])) ? $val : $data[$key]; } } - - if ($img_path == '' OR $img_url == '') + + if ($img_path == '' OR $img_url == '') { return FALSE; } - - if ( ! @is_dir($img_path)) + + if (!@is_dir($img_path)) { return FALSE; } - - if ( ! is_writable($img_path)) + + if (!is_writable($img_path)) { return FALSE; } - - if ( ! extension_loaded('gd')) + + if (!extension_loaded('gd')) { return FALSE; } // ----------------------------------- // Remove old images + // ----------------------------------- list($usec, $sec) = explode(" ", microtime()); $now = ((float)$usec + (float)$sec); - $current_dir = @opendir($img_path); - - while ($filename = @readdir($current_dir)) + while ($filename = @readdir($current_dir)) { - if ($filename != "." and $filename != ".." and $filename != "index.html") + + if ($filename != "." and $filename != ".." and $filename != "index.html") { $name = str_replace(".jpg", "", $filename); - - if (($name + $expiration) < $now) + + if (($name + $expiration) < $now) { - @unlink($img_path.$filename); + @unlink($img_path . $filename); } } } - @closedir($current_dir); // ----------------------------------- // Do we have a "word" yet? + // ----------------------------------- - if ($word == '') - { + + if ($word == '') + { $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $str = ''; - for ($i = 0; $i < 8; $i++) + for ($i = 0;$i < 8;$i++) { - $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1); + $str.= substr($pool, mt_rand(0, strlen($pool) - 1) , 1); } - $word = $str; - } + } // ----------------------------------- // Determine angle and position + // ----------------------------------- - $length = strlen($word); - $angle = ($length >= 6) ? rand(-($length-6), ($length-6)) : 0; - $x_axis = rand(6, (360/$length)-16); - $y_axis = ($angle >= 0 ) ? rand($img_height, $img_width) : rand(6, $img_height); + $length = strlen($word); + $angle = ($length >= 6) ? rand(-($length - 6) , ($length - 6)) : 0; + $x_axis = rand(6, (360 / $length) - 16); + $y_axis = ($angle >= 0) ? rand($img_height, $img_width) : rand(6, $img_height); // ----------------------------------- // Create image + // ----------------------------------- // PHP.net recommends imagecreatetruecolor(), but it isn't always available - if (function_exists('imagecreatetruecolor')) + + + if (function_exists('imagecreatetruecolor')) { $im = imagecreatetruecolor($img_width, $img_height); } @@ -144,205 +167,187 @@ if ( ! function_exists('create_captcha')) // ----------------------------------- // Assign colors + // ----------------------------------- - $bg_color = imagecolorallocate ($im, 255, 255, 255); - $border_color = imagecolorallocate ($im, 153, 102, 102); - $text_color = imagecolorallocate ($im, 204, 153, 153); - $grid_color = imagecolorallocate($im, 255, 182, 182); - $shadow_color = imagecolorallocate($im, 255, 240, 240); + $bg_color = imagecolorallocate($im, 255, 255, 255); + $border_color = imagecolorallocate($im, 153, 102, 102); + $text_color = imagecolorallocate($im, 204, 153, 153); + $grid_color = imagecolorallocate($im, 255, 182, 182); + $shadow_color = imagecolorallocate($im, 255, 240, 240); // ----------------------------------- // Create the rectangle + // ----------------------------------- ImageFilledRectangle($im, 0, 0, $img_width, $img_height, $bg_color); // ----------------------------------- // Create the spiral pattern + // ----------------------------------- - $theta = 1; - $thetac = 7; - $radius = 16; - $circles = 20; - $points = 32; - - for ($i = 0; $i < ($circles * $points) - 1; $i++) + $theta = 1; + $thetac = 7; + $radius = 16; + $circles = 20; + $points = 32; + for ($i = 0;$i < ($circles * $points) - 1;$i++) { $theta = $theta + $thetac; - $rad = $radius * ($i / $points ); + $rad = $radius * ($i / $points); $x = ($rad * cos($theta)) + $x_axis; $y = ($rad * sin($theta)) + $y_axis; $theta = $theta + $thetac; $rad1 = $radius * (($i + 1) / $points); $x1 = ($rad1 * cos($theta)) + $x_axis; - $y1 = ($rad1 * sin($theta )) + $y_axis; + $y1 = ($rad1 * sin($theta)) + $y_axis; imageline($im, $x, $y, $x1, $y1, $grid_color); $theta = $theta - $thetac; } // ----------------------------------- // Write the text + // ----------------------------------- $use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE; - - if ($use_font == FALSE) + + if ($use_font == FALSE) { $font_size = 5; - $x = rand(0, $img_width/($length/3)); + $x = rand(0, $img_width / ($length / 3)); $y = 0; } else { - $font_size = 16; - $x = rand(0, $img_width/($length/1.5)); - $y = $font_size+2; + $font_size = 16; + $x = rand(0, $img_width / ($length / 1.5)); + $y = $font_size + 2; } - - for ($i = 0; $i < strlen($word); $i++) + for ($i = 0;$i < strlen($word);$i++) { - if ($use_font == FALSE) + + if ($use_font == FALSE) { - $y = rand(0 , $img_height/2); - imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color); - $x += ($font_size*2); + $y = rand(0, $img_height / 2); + imagestring($im, $font_size, $x, $y, substr($word, $i, 1) , $text_color); + $x+= ($font_size * 2); } else { - $y = rand($img_height/2, $img_height-3); + $y = rand($img_height / 2, $img_height - 3); imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1)); - $x += $font_size; + $x+= $font_size; } } - // ----------------------------------- // Create the border + // ----------------------------------- - imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color); + imagerectangle($im, 0, 0, $img_width - 1, $img_height - 1, $border_color); // ----------------------------------- // Generate the image + // ----------------------------------- - $img_name = $now.'.jpg'; - - ImageJPEG($im, $img_path.$img_name); - + $img_name = $now . '.jpg'; + ImageJPEG($im, $img_path . $img_name); $img = "\""; - ImageDestroy($im); - - return array('word' => $word, 'time' => $now, 'image' => $img); + return array( + 'word' => $word, + 'time' => $now, + 'image' => $img + ); } } - /** * Display CAPTCHA * * @access public * @return string */ -if ( ! function_exists('display_captcha')) -{ - function display_captcha($data = '', $img_path = '', $img_url = '', $font_path = '') - { - $defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200); - foreach ($defaults as $key => $val) +if (!function_exists('display_captcha')) +{ + + function display_captcha($word = '') + { + $data = ''; + list($usec, $sec) = explode(" ", microtime()); + $now = ((float)$usec + (float)$sec); + $defaults = array( + 'word' => $word, + 'img_path' => '', + 'img_url' => '', + 'img_width' => '150', + 'img_height' => '30', + 'font_path' => '', + 'expiration' => 7200 + ); + foreach ($defaults as $key => $val) { - if ( ! is_array($data)) + + if (!is_array($data)) { - if ( ! isset($$key) OR $$key == '') + + if (!isset($$key) OR $$key == '') { $$key = $val; } } else { - $$key = ( ! isset($data[$key])) ? $val : $data[$key]; + $$key = (!isset($data[$key])) ? $val : $data[$key]; } } - - if ($img_path == '' OR $img_url == '') + + if (!extension_loaded('gd')) { return FALSE; } - if ( ! @is_dir($img_path)) - { - return FALSE; - } - - if ( ! is_writable($img_path)) - { - return FALSE; - } - - if ( ! extension_loaded('gd')) - { - return FALSE; - } - - // ----------------------------------- - // Remove old images - // ----------------------------------- - - list($usec, $sec) = explode(" ", microtime()); - $now = ((float)$usec + (float)$sec); - - $current_dir = @opendir($img_path); - - while ($filename = @readdir($current_dir)) - { - if ($filename != "." and $filename != ".." and $filename != "index.html") - { - $name = str_replace(".jpg", "", $filename); - - if (($name + $expiration) < $now) - { - @unlink($img_path.$filename); - } - } - } - - @closedir($current_dir); - // ----------------------------------- // Do we have a "word" yet? + // ----------------------------------- - if ($word == '') - { + + if ($word == '') + { $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - $str = ''; - for ($i = 0; $i < 8; $i++) + for ($i = 0;$i < 8;$i++) { - $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1); + $str.= substr($pool, mt_rand(0, strlen($pool) - 1) , 1); } - $word = $str; - } + } // ----------------------------------- // Determine angle and position + // ----------------------------------- - $length = strlen($word); - $angle = ($length >= 6) ? rand(-($length-6), ($length-6)) : 0; - $x_axis = rand(6, (360/$length)-16); - $y_axis = ($angle >= 0 ) ? rand($img_height, $img_width) : rand(6, $img_height); + $length = strlen($word); + $angle = ($length >= 6) ? rand(-($length - 6) , ($length - 6)) : 0; + $x_axis = rand(6, (360 / $length) - 16); + $y_axis = ($angle >= 0) ? rand($img_height, $img_width) : rand(6, $img_height); // ----------------------------------- // Create image + // ----------------------------------- // PHP.net recommends imagecreatetruecolor(), but it isn't always available - if (function_exists('imagecreatetruecolor')) + + + if (function_exists('imagecreatetruecolor')) { $im = imagecreatetruecolor($img_width, $img_height); } @@ -353,99 +358,102 @@ if ( ! function_exists('display_captcha')) // ----------------------------------- // Assign colors + // ----------------------------------- - $bg_color = imagecolorallocate ($im, 255, 255, 255); - $border_color = imagecolorallocate ($im, 153, 102, 102); - $text_color = imagecolorallocate ($im, 204, 153, 153); - $grid_color = imagecolorallocate($im, 255, 182, 182); - $shadow_color = imagecolorallocate($im, 255, 240, 240); + $bg_color = imagecolorallocate($im, 255, 255, 255); + $border_color = imagecolorallocate($im, 153, 102, 102); + $text_color = imagecolorallocate($im, 204, 153, 153); + $grid_color = imagecolorallocate($im, 255, 182, 182); + $shadow_color = imagecolorallocate($im, 255, 240, 240); // ----------------------------------- // Create the rectangle + // ----------------------------------- ImageFilledRectangle($im, 0, 0, $img_width, $img_height, $bg_color); // ----------------------------------- // Create the spiral pattern + // ----------------------------------- - $theta = 1; - $thetac = 7; - $radius = 16; - $circles = 20; - $points = 32; - - for ($i = 0; $i < ($circles * $points) - 1; $i++) + $theta = 1; + $thetac = 7; + $radius = 16; + $circles = 20; + $points = 32; + for ($i = 0;$i < ($circles * $points) - 1;$i++) { $theta = $theta + $thetac; - $rad = $radius * ($i / $points ); + $rad = $radius * ($i / $points); $x = ($rad * cos($theta)) + $x_axis; $y = ($rad * sin($theta)) + $y_axis; $theta = $theta + $thetac; $rad1 = $radius * (($i + 1) / $points); $x1 = ($rad1 * cos($theta)) + $x_axis; - $y1 = ($rad1 * sin($theta )) + $y_axis; + $y1 = ($rad1 * sin($theta)) + $y_axis; imageline($im, $x, $y, $x1, $y1, $grid_color); $theta = $theta - $thetac; } // ----------------------------------- // Write the text + // ----------------------------------- $use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE; - - if ($use_font == FALSE) + + if ($use_font == FALSE) { $font_size = 5; - $x = rand(0, $img_width/($length/3)); + $x = rand(0, $img_width / ($length / 3)); $y = 0; } else { - $font_size = 16; - $x = rand(0, $img_width/($length/1.5)); - $y = $font_size+2; + $font_size = 16; + $x = rand(0, $img_width / ($length / 1.5)); + $y = $font_size + 2; } - - for ($i = 0; $i < strlen($word); $i++) + for ($i = 0;$i < strlen($word);$i++) { - if ($use_font == FALSE) + + if ($use_font == FALSE) { - $y = rand(0 , $img_height/2); - imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color); - $x += ($font_size*2); + $y = rand(0, $img_height / 2); + imagestring($im, $font_size, $x, $y, substr($word, $i, 1) , $text_color); + $x+= ($font_size * 2); } else { - $y = rand($img_height/2, $img_height-3); + $y = rand($img_height / 2, $img_height - 3); imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1)); - $x += $font_size; + $x+= $font_size; } } - // ----------------------------------- // Create the border + // ----------------------------------- - imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color); + imagerectangle($im, 0, 0, $img_width - 1, $img_height - 1, $border_color); // ----------------------------------- // Generate the image + // ----------------------------------- - $img_name = $now.'.jpg'; - + $img_name = $now . '.jpg'; echo ImageJPEG($im); - ImageDestroy($im); } } // ------------------------------------------------------------------------ - /* End of file captcha_helper.php */ + + /* Location: ./system/heleprs/captcha_helper.php */ diff --git a/htdocs/application/views/defaults/paste_form.php b/htdocs/application/views/defaults/paste_form.php index ccea17f..11bf88f 100644 --- a/htdocs/application/views/defaults/paste_form.php +++ b/htdocs/application/views/defaults/paste_form.php @@ -101,7 +101,9 @@ - + + +
diff --git a/htdocs/application/views/view/captcha.php b/htdocs/application/views/view/captcha.php index 4f3a01c..14cdda1 100644 --- a/htdocs/application/views/view/captcha.php +++ b/htdocs/application/views/view/captcha.php @@ -1,4 +1,3 @@