<?php
session_start ();
if (isset ($_POST['ok']))
{
$code = !empty ($_POST['code']) ? trim ($_POST['code']) : NULL;
if (empty ($_SESSION["code"]) || $_SESSION["code"] != $code)
echo "Неверный код";
}
?>
<form action="" method="post">
<p><label>Введите код с картинки</label><br />
<img src="55.php" />
</p>
<p><input type="text" name="code" />
</p>
<p><input type="submit" name="ok" />
</p>
</form>
А вот код самой капчи
<?php
//Запускаем сессию
session_start ();
//Генерим код
$_SESSION["code"] = mt_rand (10000, 90000);
//Говорим браузеру, что это картинка
header ("Content-type: image/png");
//Создаем пустое изображение
$img = imagecreatetruecolor (100, 40);
//генерим случайные цвета
$col = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
$col2 = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
$col3 = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
$col4 = imagecolorresolve ($img, 255, 255, 255);
$col5 = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
//Создаем линии на картинке
imageline ($img, mt_rand (0, 10), mt_rand (0, 20), mt_rand (80, 90), mt_rand (30, 35), $col);
imageline ($img, mt_rand (90, 95), mt_rand (0, 20), mt_rand (0, 20), mt_rand (30, 35), $col2);
imageline ($img, mt_rand (40, 45), mt_rand (0, 20), mt_rand (30, 32), mt_rand (30, 35), $col3);
imageline ($img, mt_rand (60, 65), mt_rand (0, 20), mt_rand (80, 90), mt_rand (30, 35), $col5);
//Пишем сгенерированные выше цифры на картинку
imagestring ($img, 5, 30, 15, $_SESSION["code"], $col4);
//И, наконец, выводим картинку (капчу)
imagepng ($img);
Спустя 1 час, 14 минут, 25 секунд (4.12.2010 - 11:42) vinnie написал(а):
А вот вариант с буквами
<?php
//Запускаем сессию
session_start ();
//Генерим код
$array1 = range ('A', 'Z');
$array2 = range ('a', 'z');
$merge = array_merge ($array1, $array2);
shuffle ($merge);
$str = implode ("", $merge);
$captcha = substr ($str, 0, 6);
$_SESSION["code"] = $captcha;
//Говорим браузеру, что это картинка
header ("Content-type: image/png");
//Создаем пустое изображение
$img = imagecreatetruecolor (100, 40);
//генерим случайные цвета
$col = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
$col2 = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
$col3 = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
$col4 = imagecolorresolve ($img, 255, 255, 255);
$col5 = imagecolorresolve ($img, mt_rand (0, 255), mt_rand (0, 255), mt_rand (0, 255));
//Создаем линии на картинке
imageline ($img, mt_rand (0, 10), mt_rand (0, 20), mt_rand (80, 90), mt_rand (30, 35), $col);
imageline ($img, mt_rand (90, 95), mt_rand (0, 20), mt_rand (0, 20), mt_rand (30, 35), $col2);
imageline ($img, mt_rand (40, 45), mt_rand (0, 20), mt_rand (30, 32), mt_rand (30, 35), $col3);
imageline ($img, mt_rand (60, 65), mt_rand (0, 20), mt_rand (80, 90), mt_rand (30, 35), $col5);
//Пишем сгенерированные выше цифры на картинку
imagestring ($img, 5, 30, 15, $_SESSION["code"], $col4);
//И, наконец, выводим картинку (капчу)
imagepng ($img);
Спустя 2 минуты, 27 секунд (4.12.2010 - 11:44) vital написал(а):
а мы все взяли и в уме по коду нарисвовали, ага. Не проще скрином, а?
пс.
Давно доказано, что вместо капчи лучше простые вопросы(2+2, какой день недели завтра, какой мужчина жил на крыше и т.п.). Ибо текст автоматом распознать можно, а вот искуственный интеллект еще не придумали.
пс.
Давно доказано, что вместо капчи лучше простые вопросы(2+2, какой день недели завтра, какой мужчина жил на крыше и т.п.). Ибо текст автоматом распознать можно, а вот искуственный интеллект еще не придумали.
Спустя 2 минуты, 13 секунд (4.12.2010 - 11:46) vinnie написал(а):
vital
достаточно просто скопипастить этот код себе, и капча появится)))
достаточно просто скопипастить этот код себе, и капча появится)))
Цитата |
Давно доказано, что вместо капчи лучше простые вопросы(2+2 |
твои 2+2 можно легко обойти, задать роботу по умолчанию цифру 4 и все!!!
Спустя 2 минуты, 15 секунд (4.12.2010 - 11:49) kirik написал(а):
Слабенькая капча.
- буквы одного цвета
- всегда в одном месте
- на одном уровне
- одним размером
- одним шрифтом
Мой тебе совет: чтобы сделать хорошую капчу попробуй написать расшифровщик капчи (пока своей). Сразу все слабые места вылезут.
- буквы одного цвета
- всегда в одном месте
- на одном уровне
- одним размером
- одним шрифтом
Мой тебе совет: чтобы сделать хорошую капчу попробуй написать расшифровщик капчи (пока своей). Сразу все слабые места вылезут.
Спустя 1 минута, 20 секунд (4.12.2010 - 11:50) vinnie написал(а):
Цитата |
расшифровщик капчи |
эт как?
Спустя 1 минута, 18 секунд (4.12.2010 - 11:51) vinnie написал(а):
Цитата |
- буквы одного цвета - всегда в одном месте - на одном уровне - одним размером - одним шрифтом |
Ну это дело поправимое. Тут вопрос не в этом, а в том, пропустит ли оно спам или станет стеной перед ним?
Спустя 44 секунды (4.12.2010 - 11:52) vital написал(а):
Цитата |
твои 2+2 можно легко обойти, задать роботу по умолчанию цифру 4 и все!!! |
А генерить разные математатические выражения слабо?
т.е. пример не статичен, он генерится.
Как и вопросы можно просто показывать рандомом из базы в которой этих вопросов штук 20, скажем.
Спустя 1 минута, 6 секунд (4.12.2010 - 11:53) vital написал(а):
Цитата |
эт как? |
Эт взять картинку и распознать на ней цифры.
Вот только алгоритмы эти сложные для школьника.
Спустя 41 секунда (4.12.2010 - 11:54) vinnie написал(а):
vital
мне мой вариант больше нравится
мне мой вариант больше нравится
Спустя 1 минута, 44 секунды (4.12.2010 - 11:55) kirik написал(а):
Цитата (vinnie @ 4.12.2010 - 03:51) |
Тут вопрос не в этом, а в том, пропустит ли оно спам или станет стеной перед ним? |
Яж говорю, что капча слабая, поэтому может стать только невысоким заборчиком Если спамбот умеет расшифровывать капчи, то эта капча ему не помеха абсолютно. Да любая капча, которую разберет человек - не помеха. Сервис есть такой - индусы полцента за разгаданную капчу получают у себя в индии (это не шутка).
Спустя 58 секунд (4.12.2010 - 11:56) kirik написал(а):
Цитата (vinnie @ 4.12.2010 - 03:50) |
эт как? |
Ну скрипт напиши, который твою капчу будет в текст переводить. Ака finereader для капчи.
Спустя 16 секунд (4.12.2010 - 11:57) vital написал(а):
Цитата |
Сервис есть такой - индусы полцента за разгаданную капчу получают у себя в индии |
И рега по инвайтам, ага=)
Спустя 29 секунд (4.12.2010 - 11:57) vinnie написал(а):
kirik
что посоветуешь?)))
что посоветуешь?)))
Спустя 1 минута, 22 секунды (4.12.2010 - 11:58) vital написал(а):
Цитата |
kirik что посоветуешь?))) |
Цитата |
Давно доказано, что вместо капчи лучше простые вопросы(2+2, какой день недели завтра, какой мужчина жил на крыше и т.п.). Ибо текст автоматом распознать можно, а вот искуственный интеллект еще не придумали. |
Спустя 44 секунды (4.12.2010 - 11:59) kirik написал(а):
Цитата (vinnie @ 4.12.2010 - 03:57) |
что посоветуешь?))) |
Не париться и оставить как есть Ну если нет желания помучить себя Или поставь себе recaptcha
Спустя 1 минута, 7 секунд (4.12.2010 - 12:00) kirik написал(а):
Цитата (vital @ 4.12.2010 - 03:58) |
Давно доказано, что вместо капчи лучше простые вопросы(2+2, какой день недели завтра, какой мужчина жил на крыше и т.п.). |
Вопросы про мужчин отпадают сразу, если сервис мультиязычный, уравнения тоже решаются на раз-два.
Спустя 4 минуты, 36 секунд (4.12.2010 - 12:05) vital написал(а):
Цитата |
опросы про мужчин отпадают сразу, если сервис мультиязычный |
что мешает сделать вопросы на 2х-3х-Нти языках?
Спустя 54 секунды (4.12.2010 - 12:06) vital написал(а):
Цитата |
уравнения тоже решаются на раз-два. |
добавляем скобки, и фигсдва)
Спустя 1 минута, 57 секунд (4.12.2010 - 12:08) kirik написал(а):
Цитата (vital @ 4.12.2010 - 04:05) |
что мешает сделать вопросы на 2х-3х-Нти языках? |
Можно, но вопросы-то не бесконечные
Цитата (vital @ 4.12.2010 - 04:06) |
добавляем скобки, и фигсдва) |
Чем уровнение со скобками сложнее рандомной строки?
Спустя 4 минуты, 42 секунды (4.12.2010 - 12:12) vital написал(а):
Цитата |
Можно, но вопросы-то не бесконечные |
Порядка 10ти вопросов выше крыши. Если принципиально - можно секретарше в обязанность поставить менять их раз в месяц.
Цитата |
Чем уровнение со скобками сложнее рандомной строки? |
парсить сложнее? Если еще цифры сделать разных цветов, скобки подцветить.. Что-то сделать <font>-ом что-сто <span>-ом. А лучше менять их рандомно. и все=)
Спустя 1 минута, 37 секунд (4.12.2010 - 12:14) vinnie написал(а):
Цитата |
Порядка 10ти вопросов выше крыши |
легко можно подделать
Спустя 1 минута, 37 секунд (4.12.2010 - 12:16) kirik написал(а):
Цитата (vital @ 4.12.2010 - 04:12) |
Что-то сделать <font>-ом что-сто <span>-ом. |
Погодь.. ты вообще предлагаешь html'ный вариант? Так это же даже хитрых алгоритмов отделения знаков от фона и выравнивания оных не нужно писать striptags, регулярки в руки и пошел
Спустя 3 минуты, 9 секунд (4.12.2010 - 12:19) vital написал(а):
Цитата |
регулярки в руки и пошел |
в том и суть. Сломать можно что угодно, важно что бы стоимость взлома была выше профита. А ковыряния со всеми этими регулярками будет достаточно сложное. Хотя, конечно, про хтмл мой фейл. Не подумал про стриптакгс.
Спустя 52 секунды (4.12.2010 - 12:20) vinnie написал(а):
Kirik
вдобавок md5();
вдобавок md5();
Спустя 1 минута, 29 секунд (4.12.2010 - 12:21) kirik написал(а):
Цитата (vinnie @ 4.12.2010 - 04:20) |
вдобавок md5(); |
Эт про что?
Спустя 1 минута, 4 секунды (4.12.2010 - 12:22) vinnie написал(а):
это шутка такая)))))
Спустя 12 секунд (4.12.2010 - 12:22) vital написал(а):
Цитата |
стриптакгс. |
Ну блин.. Можно смайлики рандомно повставлять между цифрами, или там <img> с прозрачной картинкой сосвывать.. Короче, что бы парсить было сложно)
Суть в том, что если очень надо - то цифры с картинок распознают в почти 90 что-ли процентах случаев, если надо. Те же индусы как пример.
Я вот видел русский какой-то сервис, платный офк+рега по инвайтам. Так там вообще они разбирают почтти все возможные капчи. Рекапчу так точно.
Спустя 4 минуты, 38 секунд (4.12.2010 - 12:27) kirik написал(а):
Цитата (vital @ 4.12.2010 - 04:22) |
Те же индусы как пример. |
Да.. индусы Лингред точно не читали
Цитата (vital @ 4.12.2010 - 04:22) |
Короче, что бы парсить было сложно |
Кстати да, можно вставлять "левые" числа, которые скрывать через css у юзера в браузере.
Хм.. про вопросы: а что делать, если на вопрос можно дать разный ответ? "карлсон", "карлосон" как обычная ошибка?
Спустя 6 минут, 1 секунда (4.12.2010 - 12:33) vital написал(а):
Цитата |
можно вставлять "левые" числа, которые скрывать через css у юзера в браузере. |
вооот! Ты понял мою мысль)
Цитата |
а что делать, если на вопрос можно дать разный ответ? "карлсон", "карлосон" как обычная ошибка? |
Ну.. если прицнипиально - можно сравнивать не просто ==, а каким нить алгоритмом не четкого сравнения, с коэффицентом скажем процентов 90.
Но имхо, с точки зрения юзабилити - при не правильном ответе на вопрос стоит вывести что-нить в духе, ваш ответ _такой-то ответ_ не верен. Попробуйте еще раз. И ответ подсвтетить. Опечатки зверь увидит и все поймет. А орфрографические ошибки.. Ну пусть вводит ответы пока ответом не будет слово, которое юзверь не введет правильно. Хоть писать научится)
Спустя 4 минуты, 51 секунда (4.12.2010 - 12:38) vinnie написал(а):
Цитата |
с коэффицентом |
Цитата |
при не правильном |
и после этого ты пишешь
Цитата |
Хоть писать научится) |
Спустя 10 минут, 31 секунда (4.12.2010 - 12:48) vital написал(а):
Цитата |
и после этого ты пишешь |
решил компенсировать свои обиженные чувства, что обломали твой великий код?
Спустя 7 минут, 24 секунды (4.12.2010 - 12:56) vinnie написал(а):
))))не смеши меня... в любом случае не ты. ты даже не знал, что этот код можно скопировать, чтобы появилась капча, просил скрин выложить)))))))))))) короче, тема закрыта
Спустя 1 день, 19 часов, 30 минут, 45 секунд (6.12.2010 - 08:27) vital написал(а):
Цитата |
ты даже не знал, что этот код можно скопировать |
Между не знанием, и таким понятием как западло\лениво\многочести есть большая граница. Ты не понял..
_____________
Меньше теории, больше практики...