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 :: Как написать капчу?

 PHP.SU

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


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

> Без описания
DimKA
Отправлено: 15 Января, 2010 - 23:26:23
Post Id


Новичок


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


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




Объясните какие есть варианты? и как вообще это сделать?
 
 Top
alpha_beta
Отправлено: 15 Января, 2010 - 23:35:05
Post Id


Новичок


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


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




DimKA, так же как и изобрести велосипед.
 
 Top
vitaliy_mad
Отправлено: 15 Января, 2010 - 23:55:19
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




DimKA, примерно так: страница с капчей запрашивает другой скрипт через тег img. он в свою очередь генерирует случайное число(строку) записывает ее в $_SESSION и рисует при помощи GD. после ввода кода, введенный текст сравнивается с содержимым сессии...
 
 Top
SAD
Отправлено: 16 Января, 2010 - 00:04:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




Не проще взять готовую? Их на любой вкус и цвет в инете куча
 
 Top
vitaliy_mad
Отправлено: 16 Января, 2010 - 00:06:52
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




SAD, иногда проще написать 10 срок кода, чем искать подходящую...
 
 Top
SAD
Отправлено: 16 Января, 2010 - 00:08:38
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




Можно скачать хотя бы одну, разобраться как она организована и сделать свою. На словах все не объяснишь)
 
 Top
vitaliy_mad
Отправлено: 16 Января, 2010 - 00:09:49
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




SAD, согласен... именно так я практически всему и учился.... Радость
 
 Top
SAD
Отправлено: 16 Января, 2010 - 00:11:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




DimKA, сделайте как мы посоветовали, не поймете-поможем))

Я тоже так учусь, беру чужие кода, смотрю что и как.И делаю свое.

(Отредактировано автором: 16 Января, 2010 - 00:15:08)

 
 Top
DimKA
Отправлено: 16 Января, 2010 - 00:27:31
Post Id


Новичок


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


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




ок,спасибо! так и сделаю Подмигивание
 
 Top
krutovaniya
Отправлено: 16 Января, 2010 - 02:06:04
Post Id



Новичок


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


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




http://www[dot]captcha[dot]ru/
(Добавление)
Там же можно скачать пример
 
 Top
PHPLamer
Отправлено: 16 Января, 2010 - 19:05:24
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


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




Я делал так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ////////////////////////////////////////////////////////////////////////////////
  3. ///                                                     Captcha by PHPLamer                          ///
  4. ////////////////////////////////////////////////////////////////////////////////
  5.  
  6. $sim_mass = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"); // массив символов английского алфавита
  7.  
  8. $nom1 = rand("1","26"); //Генерируем 4 случайных числа
  9. $nom2 = rand("1","26"); //в интервале английского алфавита
  10. $nom3 = rand("1","26");
  11. $nom4 = rand("1","26");
  12.  
  13. $nom1_y = rand("6","19"); //генерируем положение символов по оси Y
  14. $nom2_y = rand("6","19");
  15. $nom3_y = rand("6","19");
  16. $nom4_y = rand("6","19");
  17.  
  18. $nom1_x = rand("5","15"); // генерируем положение символов по оси X
  19. $nom2_x = rand("30","35");
  20. $nom3_x = rand("55","65");
  21. $nom4_x = rand("80","90");
  22.  
  23. $nom1 = $sim_mass[$nom1-1]; //получаем символы из массива по рандомному индексу
  24. $nom2 = $sim_mass[$nom2-1];
  25. $nom3 = $sim_mass[$nom3-1];
  26. $nom4 = $sim_mass[$nom4-1];
  27.  
  28. $captcha = imagecreate("100", "40"); //создаем рисунок в ширину 100 пикселей и высоту 40
  29.  
  30. $background_color = imagecolorallocate ($captcha, 230, 215, 205);//задаем рисунку цвет фона
  31.  
  32. $green = imagecolorallocate($captcha,10,110,190);// устанавливаем цвет текста для нашего рисунка
  33.  
  34. imagepsslantfont($nom1,3.5);
  35.  
  36. imagechar($captcha,5,$nom1_x,$nom1_y,$nom1,$green); //рисуем текст на картинке
  37. imagechar($captcha,5,$nom2_x,$nom2_y,$nom2,$green);
  38. imagechar($captcha,5,$nom3_x,$nom3_y,$nom3,$green);
  39. imagechar($captcha,5,$nom4_x,$nom4_y,$nom4,$green);
  40.  
  41. imageline($captcha,1,7,100,7,$green); //делаем шум, рисуем горизонтальные линии
  42. imageline($captcha,1,22,100,22,$green);
  43. imageline($captcha,1,37,100,37,$green);
  44.  
  45. imageline($captcha,5,1,5,40,$green); //делаем шум, рисуем вертикальные линии
  46. imageline($captcha,20,1,20,40,$green); // по мне дак немного школьную тетрадку надпоминает
  47. imageline($captcha,35,1,35,40,$green);
  48. imageline($captcha,50,1,50,40,$green);
  49. imageline($captcha,65,1,65,40,$green);
  50. imageline($captcha,80,1,80,40,$green);
  51. imageline($captcha,95,1,95,40,$green);
  52.  
  53. header("Content-type: image/jpeg");/* посылаем заголовок серверу про то, что мы передаем ему рисунок формата jpeg*/
  54.  
  55. imagejpeg($captcha); //выводим рисунок
  56.  
  57. imagedestroy($captcha);/* освобождаем память*/
  58.  
  59.  
  60. ?>
 
 Top
JustUserR
Отправлено: 17 Января, 2010 - 11:50:43
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




PHPLamer пишет:
rand("1","26");
Зачем же делать лишние неявные преобразования из строки в число когда сразу можно написать числа - еще в качестве недостатка могу указать то что для каждой из 4 букв на капче каждый раз создаются свои переменные и по 4 раза вызываются функции когда можно было сделать массивом и циклом - а так нормально Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
andrweb
Отправлено: 17 Января, 2010 - 16:11:27
Post Id



Гость


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


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




Слишком много кода как-то. Короче будет с for()-ом. И глазу приятнее.


-----
Горбатого могила исправит.
 
 Top
kuller
Отправлено: 17 Января, 2010 - 18:01:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


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




мой вариант
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. session_start();
  4. $a = rand(1,20);
  5. $b = rand(1,20);
  6. $c = $a + $b;
  7. $_SESSION['proverka'] = $c;
  8. echo "Сколько будет $a + $b =?";
  9. ?>
  10.  
 
 Top
JustUserR
Отправлено: 17 Января, 2010 - 18:21:46
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




kuller пишет:
"Сколько будет $a + $b =?";
Автоматом такие строки достаточно легко парсятся - тут несколно написать регулярное выражение по которому ответ будет выдаваться автоматически и теряется основной замысел капчи
Ведь ее суть не в защите от того чтобы робот сам взламывал ее - а в том чтобы алгоритм просто не автоматизировался (А разпознавание изображения трудоемкое дело)


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB