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 :: Версия для печати :: Вывод каптчи
Форумы портала PHP.SU » » Вопросы новичков » Вывод каптчи

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

1. jonston - 03 Сентября, 2014 - 21:40:53 - перейти к сообщению
Здравствуйте!Есть скрипт генерирующий каптчу.Есть шаблон в котором [[captcha]] таким образом получается код картинки.Этот скрипт можно редактировать, но путь к нему мы не знаем так что <img src="[[captcha]]"/> не прокатит.Что делать?

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

почему это?
3. jonston - 04 Сентября, 2014 - 14:45:32 - перейти к сообщению
esterio пишет:
jonston пишет:
но путь к нему мы не знаем так что <img src="[[captcha]]"/> не прокатит

почему это?

Потому что в атрибуте src выводится бинарник картинки.
4. esterio - 04 Сентября, 2014 - 14:52:25 - перейти к сообщению
так сделайте отдельно скрипт типа captcha.php и делайте адтрибут src ссилкой на него
5. jonston - 04 Сентября, 2014 - 15:05:33 - перейти к сообщению
esterio пишет:
так сделайте отдельно скрипт типа captcha.php и делайте адтрибут src ссилкой на него

Так и сделал.Но теперь с сессиями проблема.В файле задает $_SESSION['captcha'] а в сниппете не видит.
6. Edwvee - 04 Сентября, 2014 - 15:33:34 - перейти к сообщению
Всмысле не видит в сниппете? При генерации формы, или при отправке? Если при генерации, то зачем оно надо? Если при отправке, то может сессия не запущена была в файле или в сниппете.
7. jonston - 04 Сентября, 2014 - 15:39:27 - перейти к сообщению
Edwvee пишет:
Всмысле не видит в сниппете? При генерации формы, или при отправке? Если при генерации, то зачем оно надо? Если при отправке, то может сессия не запущена была в файле или в сниппете.


Да короче тупая cms переделывает сессии в свои.То есть если в отдельном файле установить $_SESSION['foo'], то при обращении к нему же но уже через сниппет значение будет пустое так, как обращается уже ко внутренним сессиям cms/Спасибо врядли вы мне поможете.Тут нужно копать в ядре.

 

Powered by ExBB FM 1.0 RC1