Codeigniter 2.1.4 CAPTCHA не работает на хостинге

kolybasov

Новичок
Сделал сайт на локалхосте, затем перенес его на хостинг, но внезапно перестала работать капча. Капча сделана с помощью модифицированого хелпера для CI. Капча ставится на страницу с помощью простой картинки с ссылкой на функцию
HTML:
<img src="pages/captcha" id="captcha_img" alt="Captcha">
. GD на сервере работает.

Вот код функции:
PHP:
        public function captcha()
        {
            $this->load->helper('captcha');
            $this->load->helper('string');   

            $word = random_string('numeric',5);

            $prefs = array(                // настройки капчи, все элементы являются необязательными
                'word'    => $word,        // текст
                'img_width' => 100,            // ширина изображения (int)
                'img_height' => 30,            // высота изображения (int)
                'random_str_length' => 5,        // длина случайной строки (int)
                'border' => TRUE,            // добавлять рамку (bool)
                'font_path' => asset_url().'fonts/texb.ttf'    // путь к файлу шрифта работает, проверял
                );

              $this->session->set_userdata('captcha', $word);

            create_captcha_stream($prefs);
        }
Код хэлпера:
PHP:
<?php
function create_captcha_stream($data = '')
    {
        $defaults = array('word' => '', 'img_width' => 150, 'img_height' => 30, 'font_path' => '', 'random_str_length' => '5', 'border' => TRUE);

        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 ( ! extension_loaded('gd'))
        {
            return FALSE;
        }

       
        // -----------------------------------
        // Do we have a "word" yet?
        // -----------------------------------

      if ($word == '')
      {
            $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
           
            $str = '';
            for ($i = 0; $i < $random_str_length; $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
        // -----------------------------------

        if (function_exists('imagecreatetruecolor'))
        {
            $im = imagecreatetruecolor($img_width, $img_height);
        }
        else
        {
            $im = imagecreate($img_width, $img_height);
        }

        // -----------------------------------
        //  Assign colors
        // -----------------------------------
       
        /* RAND */
        $red = rand(50, 100);
        $green = rand(50, 100);
        $blue = rand(50, 100);

        $bg_color    = imagecolorallocate($im, 255, 255, 255);
        $border_color    = imagecolorallocate($im, $red, $green, $blue);
        $text_color    = imagecolorallocate($im, $red+30, $green+30, $blue+30);
        $grid_color    = imagecolorallocate($im, $red+60, $green+60, $blue+60);
        $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 = 7;
            $x = rand(1, $img_width-(($length*$font_size)*2));
            $y = 0;
        }
        else
        {
            $font_size    = 12;
            $x = rand(1, $img_width-($length*$font_size));
            $y = $font_size+2;
        }

        for ($i = 0; $i < strlen($word); $i++)
        {
            if ($use_font == FALSE)
            {
                $y = rand(1 , $img_height-($font_size*3));
                imagestring($im, $font_size, $x, $y, substr($word, $i, 1), $text_color);
                $x += ($font_size*2);
            }
            else
            {
                $y = rand($font_size , $img_height-($font_size/3));
                imagettftext($im, $font_size, $angle, $x, $y, $text_color, $font_path, substr($word, $i, 1));
                $x += $font_size;
            }
        }


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

        if ($border == TRUE)
        {
            imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
        }

        // -----------------------------------
        //  Generate the image
        // -----------------------------------
       
        header("Content-type: image/jpeg");
        ImageJPEG($im);

        ImageDestroy($im);

        return $word;
    }
 

kolybasov

Новичок
нет ошибок - нет проблем. подумай еще раз! http://phpfaq.ru/debug

как подсказка, тестируй только картинку
http://kolybasov.ho.ua/pages/captcha
начни со слова hello
Отключил заголовок, вконце поставил echo "string"; теперь выдает такое
Код:
����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default quality ��C       $.' ",#(7),01444'9=82<.342��C     2!!22222222222222222222222222222222222222222222222222��d"��    ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������� ���w!1AQaq"2�B����    #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��9�Y�~�b�����D3j7V���!L����������l��2��2��ޖ9o6�Ds����� H��-X���x G�1Z)o=��2:ʹ�K���DOo*%a��ۜc���{�:ZhVu���-��Ȑ#(ڡK|χ�~.H1�#�� �1���<����99��r��wZ��Ο�Z�\XO�ČC�S�+��2���OQw�YZh�-�h��u�7�Y�l�!c��an����\<4�n#�캉*�eBY    �R۲��c�3%�{_�>��kY,u�.�$1FvFv���q�(��@u���m%�Ը��U6�;~��Nс��1Q����]���tQwL.`>o��3    #?<`�\2du��>�⦇q��짵�f�X�ɒ4dy����a�r    �X|WѬ�n��Ԥ���Mȅ� X��#��O%��������/�줍�Ѵ��YNA�����_�������q̐����P $r��z#(�\�ש+X�+��string
Значит картинка генерируется и нужно грешить на хостинг?
 
Сверху