Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с кодировкой на картинки 
:(
    Опции темы
4epT
Дата 11.12.2008, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Добрый вечер!
у меня по заданию нужно сделать CaptchaTest(тоесть, как на многих сайтах генерируется картинка с случайными символами и нужно ввести эти символы ....) я все реализовал, но у меня по заданию должны генерироваться русские буквы ... а генерируются черт знает что ... проблема явно в кодировке, нигде не смог найти как это исправить! подскажие пожалуйста! Ниже приведены все коды программы ....

CaptchaSecurityImages.php
Код

<?php
session_start();

class CaptchaSecurityImages {

    //var $font = '/www_host/hosts/venom.z16.ru/methods/monofont.ttf';   //тут надо полный путь к шрифту прописать,если не работает
    //var $font = 'MTCORSVA.TTF';   //тут надо полный путь к шрифту прописать,если не работает
    //var $font = 'times.ttf';   //тут надо полный путь к шрифту прописать,если не работает
    var $font = 'GOTHIC.TTF';

    function generateCode($characters) {        
        /* генерация кода */
        $possible = 'ячсмит';
        $code = '';
        $i = 0;
        while ($i < $characters) {
            $code.= substr($possible, mt_rand(0, strlen($possible)-1), 1);
            $i++;
        }
        return $code;
    }

    function CaptchaSecurityImages($width='20',$height='40',$characters='6') {
        $code = $this->generateCode($characters);                
        //$code = 'Malahov';
        $font_size = 11;        
        $image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');
        //цвета
        $background_color = imagecolorallocate($image, 249, 213, 184);
        $text_color = imagecolorallocate($image, 252, 0, 243);
        $noise_color = imagecolorallocate($image, 255, 255, 255);
        /* генерируем случайные точки на фоне */
        for( $i=0; $i<($width*$height)/3; $i++ ) {
            imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
        }
        /* генерируем случайные линии на фоне */
        for( $i=0; $i<($width*$height)/150; $i++ ) {
            imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
        }        
        /* создаем некстовое поле и добавляем текст */
        $textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
        $x = ($width - $textbox[4])/2;
        $y = ($height - $textbox[5])/2;        
        imagettftext($image, $font_size, -30, $x, $y, $text_color, $this->font , $code) or die('Error in imagettfbbox function');

        /* ввыводим captcha в браузер */        
        header('Content-Type: image/jpeg');                
        imagejpeg($image);        
        imagedestroy($image);
        $_SESSION['security_code'] = $code; //проверочный код
    }

}

$width = isset($_GET['width']) ? $_GET['width'] : '120';
$height = isset($_GET['height']) ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) && $_GET['characters'] > 1 ? $_GET['characters'] : '6';

$captcha = new CaptchaSecurityImages($width,$height,$characters);

?>


index.php
Код

<html>
<title>Image</title>
<form name="forma" action="regist.php" method="post">
<table border="2">
 <tr>
  <td align="center"><font color=000000><b>Введите символы на изображении:</font></b><br>
   <img src="CaptchaSecurityImages.php?width=150&height=150&characters=6" />
  </td>
 </tr>
 <tr align="center">
  <td><input type="text" size="20" maxlength="6" name="text"></td>
 </tr>
 <tr align="center">
  <td colspan="2"><input style="width:100%;" type="Submit" value="Проверить" name="submit"></td>
 </tr>
</table>
</form>
</html>


regist.php
Код

<?
 session_start();
 
 function check_captcha($captcha) //проверка ввода провероного слова
 {
  if ($_SESSION['security_code'] == $captcha && !empty($_SESSION['security_code']))  {    
    unset($_SESSION['security_code']);
    echo 'Код введен верно!><br /><a href="index.php">Назад</a>';
    return 1;
   }
   else  {    
    $_SESSION["error1"]=1;
    echo 'Код введен <b>НЕ</b> верно!<br /><a href="index.php">Назад</a>';
    return 0;
   }
 }
?>

<?
    check_captcha($_POST['text']);
?> 


Это полностью вся программа ... прикрепить файл с программой не получилось (((

жду предложений ) заранее сасибо!))))

PM MAIL   Вверх
bars80080
Дата 12.12.2008, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 2
Всего: 315



а ты проверял этот шрифт? открой посмотри, в готиках редко встречается русская кодировка. если не критично со шрифтом - возьми более популярный из стандартного набора
PM MAIL WWW   Вверх
Novich
Дата 16.12.2008, 17:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 16.4.2004

Репутация: нет
Всего: нет



Также не забываем, что текст в функцию imagettftext нужно передавать в кодировке UTF-8. А у вас нигде нет нужного преобразования. Используйте iconv для перевода в нужную кодировку.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.