За последние 24 часа нас посетили 36373 программиста и 1493 робота. Сейчас ищут 1162 программиста ...

captch

Тема в разделе "Прочее", создана пользователем Vantedur, 31 янв 2013.

  1. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    Не у кого не завалялась вот такая каптча, ато что-то не гуглицо
    [​IMG]
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а что в ней такого?
    ~10 строк кода. шум, круги, наклон букв
     
  3. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    в дизайн типа вписывается
     
  4. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    у виконта спроси, это его капча для лепры.
    оффтоп.
    был даже забавный случай. парень начал утверждать что умеет получать текст с картинки и написал страничку которая хавала капчу с лепры и через пару секунд выводила текст на страницу и за ящик пива предложено угадать алгоритм. победил витя - глянув в логи сервера он не увидел запросов капчи в указанное время, следовательно парень сам генерил строку, картинку, показывал картинку и через некоторое время текст типа разгадывался.
    /оффтоп.


    а на самом деле в чем проблема-то?
    сделал холст нужного цвета, кинул пару-тройку кривых, кинул 5 букв, натыкал точек.
     
  6. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    у кого?
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Напишу такую капчу за часок-другой за 500 руб на выходных, если надо.
     
  8. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    Код (Text):
    1. session_start();
    2. $t = dirName(__FILE__).'/font/evanescent.ttf'; // адрес текстуры
    3. $b = 'bdefhkmnprstuvwxyz';// буквы
    4. $w = 250;// высота
    5. $h = 60;// ширина
    6. $n = 6; // число букв
    7. $v = 0x000000;// цвет содержимого
    8. $d = 0xFFDDA6;// цвет носителя
    9. $l = strlen($b); // число букв в списке
    10. $a = $b{rand(0, $l-1)}; // выбираем рандомную букву
    11. $captcha = imagecreatetruecolor($w, $h);// формируем обводку
    12. imagefilledrectangle($captcha, 1, 1, $w-2, $h-2, $d); // формируем носитель
    13. ImageArc($captcha, 120, 40, rand(200,220), rand(200,220), 0, 360, $v); ImageArc($captcha, 120, 40, rand(100,120), rand(150,180), 0, 360, $v);// рисуем круги
    14. for ($c = 0; $c < 2000; $c++){ $xx = rand(0,$w); $yy = rand(0,$h); imagesetpixel($captcha, $xx, $yy, $v);} // вставляем шум
    15. for ($i = 1; $i < $n; $i = strlen($a)){$r = $b{rand(0, $l)};if ($r != $a{$i - 1}){$a .= $r;}}$_SESSION['captcha'] = md5($a); // генерим буквы
    16. for ($i = 0; $i < $n; $i++){ $o = ((($w-(2*(9/11)))/$n)*($i*(9/11))+15)+rand(6,8); imagettftext($captcha, rand(($h/4)*3,($h/3)*2), rand(18,25)-20, rand($o,($o+10)),rand(30,50), $v, $t, $a{$i});} // печатаем буквы
    17. header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 600) . 'GMT');
    18. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    19. header("Cache-Control: no-store, no-cache, must-revalidate");
    20. header("Cache-Control: post-check=0, pre-check=0", false);
    21. header("Pragma: no-cache");
    22. header ("Content-type: image/png");
    23. imagepng($captcha);
    24. imagedestroy($captcha);
    хотел сперва Абсолютное позиционирование сделать но понял что это на долго =)
     
  9. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Vantedur, молодец.
    Только в строке
    Код (PHP):
    1. for ($i = 1; $i < $n; $i = strlen($a)){$r = $b{rand(0, $l)};if ($r != $a{$i - 1}){$a .= $r;}}
    в функции rand сделай $l-1, как и выше делал.

    Добавлено спустя 1 минуту 24 секунды:
    Хотя, может, так задумано, чтобы периодически отваливалось, чтобы трудно было распознать..
     
  10. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    [​IMG]

    [​IMG]

    ничего не отваливается =)

    Добавлено спустя 23 минуты 2 секунды:
    [​IMG]
     
  11. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    ну так тебе и надо, значит, я предупредил
     
  12. Vantedur

    Vantedur Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    779
    Симпатии:
    2
    ну я к капче без фанатизма подошёл, будет ещё время её сто раз обтачить.
    в принципе я вполне доволен тем какая она получилась
    P.S. да и тот код что я тут выложил я уже несколько раз переписал =)