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
Форумы портала PHP.SU :: Версия для печати :: Посоветуйте стоящую русскую captcha на PHP
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Посоветуйте стоящую русскую captcha на PHP

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

1. slavkaTT - 13 Января, 2011 - 11:13:50 - перейти к сообщению
Всем доброго времени суток.
Посоветуйте простенькую русскую каптчу на PHP
2. FRIK - 13 Января, 2011 - 14:19:50 - перейти к сообщению
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 просто на русские буквы поменяй должно будет работать не тестировал=)
3. OrmaJever - 13 Января, 2011 - 14:34:22 - перейти к сообщению
неочень простенькая каптча Хм
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. ?>
4. slavkaTT - 13 Января, 2011 - 19:00:00 - перейти к сообщению
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 а это откуда брать и куда вставлять объясните буду очень благодарен.
5. Starlord - 13 Января, 2011 - 20:09:26 - перейти к сообщению
Это один из дефолтных шрифтов, который можно либо скачать либо взять из папки с дефолт шрифтами, если у вас Windows.
6. slavkaTT - 13 Января, 2011 - 20:48:11 - перейти к сообщению
Starlord пишет:
Это один из дефолтных шрифтов, который можно либо скачать либо взять из папки с дефолт шрифтами, если у вас Windows.

если допустим все файлы у меня лежат в папке www, и я туда поместил папку со шрифтами Fonts то как прописать путь до шрифта? ОС Windows
7. OrmaJever - 14 Января, 2011 - 00:26:36 - перейти к сообщению
Если у вас www/captcha.php, а шрифт www/fonts/Comic_Sans_MS.ttf то так
PHP:
скопировать код в буфер обмена
  1. $font = "fonts/Comic_Sans_MS.ttf";
8. slavkaTT - 14 Января, 2011 - 18:53:50 - перейти к сообщению
OrmaJever пишет:
Если у вас www/captcha.php, а шрифт www/fonts/Comic_Sans_MS.ttf то так
PHP:
скопировать код в буфер обмена
  1. $font = "fonts/Comic_Sans_MS.ttf";

Все равно не работает=(
9. nofx - 16 Мая, 2011 - 14:34:27 - перейти к сообщению
А нужно в переменной $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
10. AdMeen - 16 Мая, 2011 - 14:52:46 - перейти к сообщению
nofx пишет:
А нужно в переменной $font указывать именно название шрифта или название файла?


файла. там из ошибки вроде все ясно
11. Alex_pac - 17 Мая, 2011 - 06:07:07 - перейти к сообщению
http://www[dot]captcha[dot]ru/captchas/multiwave/

можно вот эту перерисовать под русские буквы (там есть картинки с буквами)

 

Powered by ExBB FM 1.0 RC1