2015-05-08 3 views
3

Это похоже на вопрос о дублировании, как-то, но его нет. задаю следующее:codeignifier captcha helper не увеличивает размер шрифта текста

  1. ли помощник codeingiter действительно имеет размер шрифта возрастающую функцию? даже если я прошел следующий параметр массива, кажется, не меняется.

    'font_size' => 36

2. Шрифт я использовал имеет следующие размеры шрифта, но до сих пор никаких изменений в размере captcah

enter image description here

Так что это вопрос ?

/* Setup config to pass into the create_captcha function */ 
       $capache_config = array(
        'img_path' => 'captcha/', 
        'img_url' => base_url() . 'captcha/', 
        'img_width' => '150', 
        'font_path' => base_url() . 'captcha/font/captcha4.ttf', 
        'img_height' => 40, 
        'expiration' => 7200 
       ); 

       /* Generate the captcha */ 
       $captcha = create_captcha($capache_config); 

Но размер я не могу увеличить, даже если я увеличил ширину или высоту? Любая вещь, которую вы знаете об этом?

enter image description here

+0

Дубликат: http://stackoverflow.com/questions/15389029/how-can-i-increase-the-font-size-of-codeigniter-captcha-helper –

+0

кажется дублированным, но вопрос мудрый выше не предоставляет, как они настроили свои настройки для создания captcha? и еще нет ответа – danielad

+0

Проверьте шрифт, который вы используете, с некоторыми шрифтами, имеющими один размер. Попытайтесь изменить свой шрифт – Saty

ответ

1

простое решение :)

1.Goto этот файл yourapplication ->system - helpers ->captcha_helper.php

2.Find следующая строка и применить изменения, как вы хотите, то есть мы изменить размер шрифта настройки хелперов размера шрифта по умолчанию капча.

NB.Вы можете перенести файл entier в ваше приложение/ядро ​​и суффикс файла с помощью MY.

$ font_size = 28; // редактировать шрифт для изменения размера капчи

// ----------------------------------- 
    // Write the text 
    // ----------------------------------- 

    $use_font = ($font_path != '' AND file_exists($font_path) AND function_exists('imagettftext')) ? TRUE : FALSE; 

    if ($use_font == FALSE) 
    { 
     $font_size = 5; 
     $x = rand(0, $img_width/($length/3)); 
     $y = 0; 
    } 
    else 
    { 
     $font_size = 28; //edited font for captcha size 
     $x = rand(0, $img_width/($length/1.5)); 
     $y = $font_size+2; 
    } 

3.Clear поймать на вашем тестирования браузера конфигурации хелперов 4.Modify на контроллере или в других местах, как FCPATH является обязательным Благодаря machineaddict!

$capache_config = array(
       'img_path' => 'captcha/', 
       'img_url' => base_url() . 'captcha/', 
       'img_width' => '290', 
       'font_path' => FCPATH . 'captcha/font/captcha4.ttf', 
       'img_height' => 65, 
       'expiration' => 7200 
      ); 

Ожидаемый результат:

enter image description here

BANG BANG Я упал на землю !!!!

+3

Изменение системных файлов - очень плохая практика. НИКОГДА не делай этого! Вы не можете обновить CodeIgniter больше, могут произойти непредвиденные результаты и т. Д. Вот почему расширяются системные классы CodeIgniter, хелпер и т. Д. – machineaddict

+1

поэтому переместите его в основную папку в папке приложения, ваша модификация заменит основную папку в системах – danielad

5

Codeigniter помощник CAPTCHA, не позволяет изменять размер шрифта. Следующее заменит функцию по умолчанию create_captcha и позволит вам изменить размер шрифта. Версия CodeIgniter, которую я использовал, - 2.2.0. Это рабочий/проверенный код.

Шаг 1: Создайте новый вспомогательный файл с именем и сохраните его под в корне папки CodeIgniter в application/helper. Содержание файла:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/** 
* CodeIgniter 
* 
* An open source application development framework for PHP 5.1.6 or newer 
* 
* @package  CodeIgniter 
* @author  ExpressionEngine Dev Team 
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. 
* @license  http://codeigniter.com/user_guide/license.html 
* @link  http://codeigniter.com 
* @since  Version 1.0 
* @filesource 
*/ 

// ------------------------------------------------------------------------ 

/** 
* CodeIgniter CAPTCHA Helper 
* 
* @package  CodeIgniter 
* @subpackage Helpers 
* @category Helpers 
* @author  ExpressionEngine Dev Team 
* @link  http://codeigniter.com/user_guide/helpers/xml_helper.html 
*/ 

// ------------------------------------------------------------------------ 

/** 
* Create CAPTCHA 
* 
* @access public 
* @param array array of data for the CAPTCHA 
* @param string path to create the image in 
* @param string URL to the CAPTCHA image folder 
* @param string server path to font 
* @return string 
*/ 
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, 'font_size' => 5); 

     foreach ($defaults as $key => $val) 
     { 
      if (! is_array($data)) 
      { 
       if (! isset($$key) OR $$key == '') 
       { 
        $$key = $val; 
       } 
      } 
      else 
      { 
       $$key = (! isset($data[$key])) ? $val : $data[$key]; 
      } 
     } 

     if ($img_path == '' OR $img_url == '') 
     { 
      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 == '') 
     { 
      $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

      $str = ''; 
      for ($i = 0; $i < 8; $i++) 
      { 
       $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); 

     // ----------------------------------- 
     // Create image 
     // ----------------------------------- 

     // PHP.net recommends imagecreatetruecolor(), but it isn't always available 
     if (function_exists('imagecreatetruecolor')) 
     { 
      $im = imagecreatetruecolor($img_width, $img_height); 
     } 
     else 
     { 
      $im = imagecreate($img_width, $img_height); 
     } 

     // ----------------------------------- 
     // 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); 

     // ----------------------------------- 
     // 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 = $theta + $thetac; 
      $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; 
      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) 
     { 
      $font_size = $font_size != 5 ? $font_size : 5; 
      $x = rand(0, $img_width/($length/3)); 
      $y = 0; 
     } 
     else 
     { 
      $font_size = $font_size != 5 ? $font_size : 16; 
      $x = rand(0, $img_width/($length/1.5)); 
      $y = $font_size+2; 
     } 

     for ($i = 0; $i < strlen($word); $i++) 
     { 
      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); 
      } 
      else 
      { 
       $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; 
      } 
     } 


     // ----------------------------------- 
     // Create the border 
     // ----------------------------------- 

     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 = "<img src=\"$img_url$img_name\" width=\"$img_width\" height=\"$img_height\" style=\"border:0;\" alt=\" \" />"; 

     ImageDestroy($im); 

     return array('word' => $word, 'time' => $now, 'image' => $img); 
    } 
} 

// ------------------------------------------------------------------------ 

/* End of file captcha_helper.php */ 
/* Location: ./system/heleprs/captcha_helper.php */ 

Я изменился:

это

$defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200); 

в этом

$defaults = array('word' => '', 'img_path' => '', 'img_url' => '', 'img_width' => '150', 'img_height' => '30', 'font_path' => '', 'expiration' => 7200, 'font_size' => 5); 

и это

if ($use_font == FALSE) 
{ 
    $font_size = 5; 
    $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; 
} 

в этот

if ($use_font == FALSE) 
{ 
    $font_size = $font_size != 5 ? $font_size : 5; 
    $x = rand(0, $img_width/($length/3)); 
    $y = 0; 
} 
else 
{ 
    $font_size = $font_size != 5 ? $font_size : 16; 
    $x = rand(0, $img_width/($length/1.5)); 
    $y = $font_size+2; 
} 

Шаг 2: Создайте папку с именем captcha в корне папки CodeIgniter (вы, возможно, уже есть) и дать ему права 755 под апача текущего пользователя/группы.

Шаг 3: Сохраните ваши .ttf пользовательские шрифты под captcha/fonts.

Шаг 4: Ваш код контроллера:

$this->load->helper('captcha'); 

$capache_config = array(
    'img_path' => 'captcha/', 
    'img_url' => base_url() . 'captcha/', 
    'img_width' => 190, 
    'img_height' => 60, 
    'font_size' => 20, 
    'font_path' => FCPATH. 'captcha/font/verdana.ttf', 
    'expiration' => 7200 
); 

/* Generate the captcha */ 
$captcha = create_captcha($capache_config); 

if ($captcha !== FALSE) { 
    echo $captcha['image']; 
} else { 
    die('No captcha was created'); 
} 

Шаг 5: Пример вывода:

captcha file

+0

Блестяще, но у меня есть более легкое решение сейчас :) – danielad

+0

гораздо лучше, чем взломать ядро. –

Смежные вопросы