Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Captcha - кто какой пользуется?

#11 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8
0

Отправлено 26 Январь 2010 - 22:32

sc2r2bey,

ZiTosS 1) Написанный кем-то класс - kCaptcha (быстро встраивается, множество настроек, можно добавлять свои шрифты)
sc2r2bey 1. как его встраивать?


Скачали архив в нём:
kcaptcha
   fonts - папка шрифтов
   util - папка утилит, нужных капчи
   form_example.php - форма для примера (код не рабочий, чисто для изучения)
   index.php - пример использования
   kcaptcha.php - класс kcaptcha
   kcaptcha_config.php - файл настроек kcaptcha

Файл конфига должен лежать в той же папке что и класс
Папку шрифтов можно задать, относительно того пути, где лежит класс. В kcaptcha_config.php переменная $fontsdir
Я бы лучше всё как есть в архиве положил бы где-нить на серверев такой же структуре, например в папке lib/kcaptcha
Не забыть туда же положить файл index.php из архива. Он там нужен.

Далее всё просто.

На нужной странице нам просто надо вставить картинку - капчу:
<img src="[путь до папки с капчей]/?<?php echo session_name()?>=<?php echo session_id()?>" />

Ключ в сессию пишется сам, без наших действий.
И у нас должно быть поле для ввода ключа:
<input type="text" name="key" />


Затем при сабмите формы мы переходим куда-то в обработчик, может быть на этой же странице:
if( условие для попадания в обработчик )
{
if( isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['key'] )
{
echo "Correct"; // ключи совпали
}else{
echo "Wrong"; // нет ключа в сессии или ключи не равны
}
}
// обработали, надо удалить ключь из сессии
if( isset($_SESSION['captcha_keystring']) )
unset($_SESSION['captcha_keystring']);


ZiTosS 2) Собственный код - простейшая сумма двух чисел от 0 до 10, нужно ввести результат. Числа определяются рандомно. Это чтобы не заморачиваться (пример)
sc2r2bey 2. можешь поделиться?

Могу мне не жалко, что там процедурный код :)
<?php

function getIntRandom($min = 1,$max = 5)
{
return rand($min, $max);
}

function getSumElements($array)
{
$sum = 0;
foreach($array as $value)
$sum += $value;
return $sum;
}

/* использование в smarty(у себя так использовал) */

$random = array();

$smarty->assign("random1", $random[] = getIntRandom(1,4)); // в шаблоне потом в нужном месте вывожу {$random1}
$smarty->assign("random2", $random[] = getIntRandom(1,4)); // в шаблоне потом в нужном месте вывожу {$random2}

$_SESSION['captcha'] = getSumElements($random);

/* использование в коде без шаблонизатора */
$random = array();

$random[] = getIntRandom(1,4);
$random[] = getIntRandom(1,4);

$_SESSION['captcha'] = getSumElements($random);

// до этого вывод формы и других полей

echo "Введите ответ суммы {$random[0]} + {$random[1]} = ? <input type='text' name='answer_captcha' />";

// продолжаем формировать код
?>

В файле - обработчике в нужном месте вставить проверку значения в сессии
<?php

if( intval($_POST['answer_captcha']) !== $_SESSION['captcha'])
{
// перенаправляем или выводим ошибку, это уже дело каждого.
}

?>

  • 0

#12 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 20 Январь 2011 - 13:37

блин у меня после каптчи почему-то строка не переноситься на новую строку, сделал как в примере, в примере работает, а у меня нет, что за хрень?

				  <form method=\"post\" action=\"\">
<p><b>Имя:</b></p>
<p><input type=\"text\" name=\"name\" value=\"".$name."\" size=\"30\" maxlength=\"50\" /></p>
<p><b>E-mail:</b></p>
<p><input type=\"text\" name=\"email\" value=\"".$email."\" size=\"30\" maxlength=\"50\" /></p>
<p><b>Комментарий:</b></p>
<p><textarea name=\"comments\" rows=\"5\" cols=\"40\">
".$comments."
</textarea></p>
<p><img src=\"./include/kaptcha/?<?php echo session_name()?>=<?php echo session_id()?>\" width=\"120\" height=\"60\" /></p>
<p><input type=\"text\" name=\"keystring\" value=\"\" /></p>
<p><input type=\"submit\" name=\"add\" value=\"Добавить\" /></p>
</form>";


http://novoshu.ru/in...e...cat=2&id=93
  • 0

#13 frilansi

frilansi
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 22 Январь 2011 - 13:50

Попробуй прикрутить рекаптчу к сайту.
  • 0

#14 aspide

aspide
  • Пользователь
  • 185 сообщений
  • Репутация: 1

Отправлено 22 Январь 2011 - 14:46

Для себя немного переделал кКапчу, добавил линии на задний план для лучшей защиты. Если кому надо скину.
  • 0

#15 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 22 Январь 2011 - 15:35

Как по мне, то лучше и надежней собственное решение, например, как предложил ZiTosS - написать сумму двух рандомных чисел. Или создать 2 массива с вопросами и ответами и случайным образом выводить вопросы. Использовал в своей практике оба варианта - меня устраивает... да и пользователям проще - не нужно мучатся и заниматься "дешифровкой" капчи ;)
  • 0


#16 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 22 Январь 2011 - 16:02

Увидел решение Е. Попова. Показывается 4 картинки, ниже текст "выберите арбуз". И вы клацаете на иконку арбуза. И интересно и сердито. Хотя можно бота прописать отдельно для его сайта)) Тогда придется картинки постоянно переименовывать, но это не проблема хД
  • 0


#17 aspide

aspide
  • Пользователь
  • 185 сообщений
  • Репутация: 1

Отправлено 22 Январь 2011 - 16:18

Почему так? Картинка будет captcha.php?img=4hg5f4b15fgh54h4f5hn4fg54nf54bn5 и всегда разные буквы, которое будет выдавать сервер, заголовки же можно любые передавать


  • 0

#18 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 22 Январь 2011 - 17:57

можно ведь узнать из кода, что
pic1.jpg - арбуз
pic2.jpg - дыня
pic3.jpg - виноград

а если через определённое количество времени менять название картинки на рандомные символы
342352.jpg - арбуз
323423.jpg - дыня
234334.jpg - виноград

то бот никогда не пройдет


  • 0


#19 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Январь 2011 - 00:46

surfer, не понял ничего про перенос строки, уточни. Причем страница выдает 404
  • 0

#20 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 27 Январь 2011 - 10:40

упс точно, почему- то редирект на форме ссылки режет и кодировки гадит если ссылка на русском, надо поправить
http://bit.ly/hstSmd
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru