Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Посоветуйте стоящую русскую captcha на PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
slavkaTT
Отправлено: 13 Января, 2011 - 11:13:50
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Всем доброго времени суток.
Посоветуйте простенькую русскую каптчу на PHP
 
 Top
FRIK
Отправлено: 13 Января, 2011 - 14:19:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 133
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1. $width = 100;               //Ширина изображения
  2. $height = 60;               //Высота изображения
  3. $font_size = 16;            //Размер шрифта
  4. $let_amount = 4;            //Количество символов, которые нужно набрать
  5. $fon_let_amount = 30;       //Количество символов на фоне
  6. $font = "fonts/cour.ttf";   //Путь к шрифту
  7.  
  8. //набор символов
  9. $letters = array("a","b","c","d","e","f","g");      
  10. //цвета
  11. $colors = array("90","110","130","150","170","190","210");  
  12.  
  13. $src = imagecreatetruecolor($width,$height);    //создаем изображение              
  14. $fon = imagecolorallocate($src,255,255,255);    //создаем фон
  15. imagefill($src,0,0,$fon);                       //заливаем изображение фоном
  16.  
  17. for($i=0;$i < $fon_let_amount;$i++)          //добавляем на фон буковки
  18. {
  19. //случайный цвет
  20. $color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100);
  21. //случайный символ
  22. $letter = $letters[rand(0,sizeof($letters)-1)];
  23. //случайный размер                              
  24. $size = rand($font_size-2,$font_size+2);                                            
  25. imagettftext($src,$size,rand(0,45),
  26. rand($width*0.1,$width-$width*0.1),
  27. rand($height*0.2,$height),$color,$font,$letter);
  28. }
  29.  
  30. for($i=0;$i < $let_amount;$i++)      //то же самое для основных букв
  31. {
  32. $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],
  33. $colors[rand(0,sizeof($colors)-1)],
  34. $colors[rand(0,sizeof($colors)-1)],rand(20,40));
  35. $letter = $letters[rand(0,sizeof($letters)-1)];
  36. $size = rand($font_size*2-2,$font_size*2+2);
  37. $x = ($i+1)*$font_size + rand(1,5);      //даем каждому символу случайное смещение
  38. $y = (($height*2)/3) + rand(0,5);                            
  39. $cod[] = $letter;                        //запоминаем код
  40. imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);
  41. }
  42.  
  43. $cod = implode("",$cod);                    //переводим код в строку
  44.  
  45. header ("Content-type: image/gif");         //выводим готовую картинку
  46. imagegif($src);

в переменной $letters просто на русские буквы поменяй должно будет работать не тестировал=)
 
 Top
OrmaJever
Отправлено: 13 Января, 2011 - 14:34:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




неочень простенькая каптча Хм
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $number  = "4";                   //количество символов
  3. $y_size = "70";                                  // ширина картинки
  4. $x_size = "150";                         // высота картинки
  5. $font = "./Comic_Sans_MS.ttf";   // сам шрифт
  6.  
  7. $image = imagecreate($x_size, $y_size);  // создаём изображени.
  8. ######## функция генерации самого числа которое будет писатся на картинке #########
  9.    function text($number)
  10.          {
  11.          $arr = array('1','2','3',
  12.                           '4','5','6',
  13.                           '7','8','9',
  14.                           '0');
  15.         $text = "";
  16.         for($i = 0; $i < $number; $i++)
  17.         {
  18.          $index = rand(0, count($arr) - 1);
  19.          $text.= $arr[$index];
  20.         }
  21.            return $text;
  22.          }
  23. ######## функция генерации самого числа которое будет писатся на картинке #########
  24.  
  25. $background_color = imagecolorallocate($image, 51, 51, 51); //цвет фона
  26. $text_color = imagecolorallocate($image, 41, 211, 50);      //цвет текста
  27. $a = imageloadfont($font);
  28. $text = imagestring ($image, $a, 5, 5,text($number), $text_color); // рисуем текст и фон на изображение
  29. header("Content-type: image/png"); // эта функция обозначает что файл нужно расценивать как картинку png. Без этой функции будет просто php код
  30. imagepng($image); // делаем картинку
  31. ?>


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
slavkaTT
Отправлено: 13 Января, 2011 - 19:00:00
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




OrmaJever пишет:
неочень простенькая каптча Хм
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $number  = "4";                   //количество символов
  3. $y_size = "70";                                  // ширина картинки
  4. $x_size = "150";                         // высота картинки
  5. $font = "./Comic_Sans_MS.ttf";   // сам шрифт
  6.  
  7. $image = imagecreate($x_size, $y_size);  // создаём изображени.
  8. ######## функция генерации самого числа которое будет писатся на картинке #########
  9.    function text($number)
  10.          {
  11.          $arr = array('1','2','3',
  12.                           '4','5','6',
  13.                           '7','8','9',
  14.                           '0');
  15.         $text = "";
  16.         for($i = 0; $i < $number; $i++)
  17.         {
  18.          $index = rand(0, count($arr) - 1);
  19.          $text.= $arr[$index];
  20.         }
  21.            return $text;
  22.          }
  23. ######## функция генерации самого числа которое будет писатся на картинке #########
  24.  
  25. $background_color = imagecolorallocate($image, 51, 51, 51); //цвет фона
  26. $text_color = imagecolorallocate($image, 41, 211, 50);      //цвет текста
  27. $a = imageloadfont($font);
  28. $text = imagestring ($image, $a, 5, 5,text($number), $text_color); // рисуем текст и фон на изображение
  29. header("Content-type: image/png"); // эта функция обозначает что файл нужно расценивать как картинку png. Без этой функции будет просто php код
  30. imagepng($image); // делаем картинку
  31. ?>



./Comic_Sans_MS.ttf а это откуда брать и куда вставлять объясните буду очень благодарен.
 
 Top
Starlord
Отправлено: 13 Января, 2011 - 20:09:26
Post Id



Новичок


Покинул форум
Сообщений всего: 50
Дата рег-ции: Окт. 2010  
Откуда: Россия


Помог: 1 раз(а)




Это один из дефолтных шрифтов, который можно либо скачать либо взять из папки с дефолт шрифтами, если у вас Windows.


-----
Спасибо сообществу php.su за помощь...
 
 Top
slavkaTT
Отправлено: 13 Января, 2011 - 20:48:11
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Starlord пишет:
Это один из дефолтных шрифтов, который можно либо скачать либо взять из папки с дефолт шрифтами, если у вас Windows.

если допустим все файлы у меня лежат в папке www, и я туда поместил папку со шрифтами Fonts то как прописать путь до шрифта? ОС Windows

(Отредактировано автором: 13 Января, 2011 - 20:49:19)

 
 Top
OrmaJever
Отправлено: 14 Января, 2011 - 00:26:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Если у вас www/captcha.php, а шрифт www/fonts/Comic_Sans_MS.ttf то так
PHP:
скопировать код в буфер обмена
  1. $font = "fonts/Comic_Sans_MS.ttf";


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
slavkaTT
Отправлено: 14 Января, 2011 - 18:53:50
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




OrmaJever пишет:
Если у вас www/captcha.php, а шрифт www/fonts/Comic_Sans_MS.ttf то так
PHP:
скопировать код в буфер обмена
  1. $font = "fonts/Comic_Sans_MS.ttf";

Все равно не работает=(
 
 Top
nofx
Отправлено: 16 Мая, 2011 - 14:34:27
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




А нужно в переменной $font указывать именно название шрифта или название файла?
В папке Fonts в Windows название файлов показываются названиями шрифтов, при копировании в папку www имя файла меняется.
Данный скрипт показывает ошибки с этим:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: imageloadfont() [function.imageloadfont]: gd warning: product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully in Z:\home\captha.ru\www\cap.php on line 28
  2. Warning: imageloadfont() [function.imageloadfont]: Error reading font, invalid font header in Z:\home\captha.ru\www\cap.php on line 28
  3.  
  4. Warning: Cannot modify header information - headers already sent by (output started at Z:\home\captha.ru\www\cap.php:28) in Z:\home\captha.ru\www\cap.php on line 30

(Отредактировано автором: 16 Мая, 2011 - 14:34:47)

 
 Top
AdMeen
Отправлено: 16 Мая, 2011 - 14:52:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 370
Дата рег-ции: Сент. 2009  
Откуда: Воронеж


Помог: 1 раз(а)




nofx пишет:
А нужно в переменной $font указывать именно название шрифта или название файла?


файла. там из ошибки вроде все ясно
 
 Top
Alex_pac
Отправлено: 17 Мая, 2011 - 06:07:07
Post Id



Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




http://www[dot]captcha[dot]ru/captchas/multiwave/

можно вот эту перерисовать под русские буквы (там есть картинки с буквами)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB