За последние 24 часа нас посетили 22919 программистов и 1227 роботов. Сейчас ищут 762 программиста ...

Капча для всех! - новый сервис

Тема в разделе "Решения, алгоритмы", создана пользователем S.t.A.M., 27 авг 2009.

  1. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Оказывается ReCaptcha - отличный сервис!
    Но поздно, я уже свой велосипед изобрел... осталось сделать его просто лучше )))
     
  2. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    т.е, если dsfile.com упадёт, мои все пользователи будут.. ммм как бы это сказать помягче... вобщем потеряют возможность публиковать посты... Автоматизация это гуд, я только за, но вижу немного по другому: почему бы не разбить на 2 части иначе: Пусть капча генерится и проверяется с моего сервака например, а новые версии у тебя на серваке, и маленькая функция по обновлению скриптов с твоего сервака на мой, через ftp например?
    Это даст возможность строго не зависить от dsfile.com, также прирост в скорости отдачи и снизит нагрузку у тебя, и даст тебе возможность дорабатывать скрипты и вести подписку по обновлению своей капчи. не?
     
  3. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Сервер надежный, стоит кажись в америке у проф. хостинговой компании )))
    Теоритичесски можно предоставлять и файл который отвечает за генерацию и сравнение капчи... тогда надо немного переработать алгоритм кодирования и привязать его к некому ключу, что бы на каждом сайте, где установлен этот скрипт, алгоритм кодирования был уникальным...

    Но этот сервис предназначен в первую очередь для новичков в PHP и для ленивых профессионалов, он максимально упращен в установке и использовании, а если выкладывать дистрибутив - к нему надо писать инструкцию по установке... тогда уже проще самому написать полностью проверку... )))
     
  4. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    ну да каждому своё, думаю этот проект - хак амерекосов =) Кто нить поставит в цикл генерицаю капчи и сервак будет удивлён от количества запросов... какие меры безопасности предпринимаются? =)
     
  5. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Mat
    Делать капчу на генерацию капчи? )))
    Да мне пофиг, пусть сервер напрягается, там запас по ресурсам оочень большой!
    Я его использую только под хранилище файлов - там объем 50Gb! (это самый большой по объему хостинг который я нашел за 3$ в месяц)))

    P.S. Посмотрел - сервак в Англии )))
     
  6. kostyl

    kostyl Guest

    Хы. Быстродействие больше определяет 3$ чем 50Gb!
     
  7. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    я вот все не пойму, а нафига такие сервисы нужны? зачем привязываться к стороннему ресурсу ради какой то капчи?
     
  8. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Я ставлю капчи на своих сайтов по 3 раза в месяц... и такое решение мне удобно ИМХО быстро )
     
  9. kostyl

    kostyl Guest

    S.t.A.M.
    Да все ок, а то все критикуют. Отличная вешь, думаю поможет тем кому лень делать самому, а если еще будет и качественной будет вообще отлично.
     
  10. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    не-не, я тоже считаю, что это хороший сервис, пускай развивается и все такое.

    Просто мне он совершенно не нужен. Да и курла нет ни на хостинге ни дома.
     
  11. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    kostyl
    Спасибо, на добром слове! )))

    С подачи Mr.M.I.T. решил, что спокойно могу обойтись без cURL'а, буду использовать file_get_content
     
  12. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    А у меня постоянно отображается подобное этому:
    Код (Text):
    1. ‰PNG   IHDR–21оµMwIDATxњн›ПOAЗ_aЎђJ°Dj+ ©QЄґ41F‹хў`Р5%„�ълЂIя(ГЃѓї?Q 1Q©z0К51-Bґ ь*аaµ¶»3іЫv·Э)пsљО{3у’/;3пнЂpЋ ¦_±ќЬѕ# лЅ±)црлЃFљiXdЏmI\ ™ѕэXdЏ?PM3mOОіЗЉ”пКh¦›Ayзэ2ЦєЧ6ЙЛ Tј§ й¬9_В�б”ђ{PBоA №%д”ђ{љБ&�“н…©Ї©¦ЅЌ.=Bq~рК;Ј0 §Ь4[›Кѕh¦™ЉЄ„??Й_ћA уJjт>\ю]b•фґlФ©™S %Е—ћ·+yOш¤El¤_Д=SuXЌ[БaeП`ЋMkLоЧЋЙ;?JэLrю!b#ЈjЬgNл n¤d«ЈЖ“ оA №§`йзюз’УїЖЋ›рrЄ·_zKвm+“wNѕЬўщф©?ЏЁк”ї«Ѓ�И3р[l:EВ<…‰Х/©?»›Т¬ЅгцЬ—Иw_§эNќv*GПBоБ¤"7jк JX8TЦП пYЫ)Фѕ¤ЙbH*
    2. &кќ9‰w§TСGч§0Y5•Ц8ЎWбs8ГqФоE»‘ЦV<Ґ/з/uDfHUЂ[uыhЈ–##P@ wґeдЯЭЎНЙЎbэ:цQі·+YѓIчнFљ]sQљ)>µъ;тЊz4ђPЁ<”ы$'мтЖйЬH№Gб)ґќъCдл@«µ\ЫЂђLБі0'ѕМ^ЄиЃ{6&?¶еrг–з‹’-;бVСі.”¦=  чSш`hLСзjkЂa}hy¤8Г••.ygЯpщ;ѓf§FЩЊeIj_
    3. ‚HЋИлџЄѕ‰“Ѓ7RоБлЊfDЗџЁqkhкФv]”р?†ї°БЌ”{PBоA №GЂKAк7
    И так на всех капчах, что делать с этим?
     
  13. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    отослать header что ты собираешься показывать png'шку
     
  14. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    И с моей капчей тоже?! ...там с хедером все впорядке!
     
  15. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Не катит, там есть header, вот скрипт (скрипт от hight):
    Код (Text):
    1.  
    2. <?php
    3. #
    4. # 2006-2008 (c) Hight | hight@inbox.ru
    5. #
    6.  
    7. header('Cache-Control: private, no-cache="set-cookie"');
    8. header('Expires: 0');
    9. header('Pragma: no-cache');
    10.  
    11. # Кол-во символов в строке
    12. $symbols_num = 6;
    13.  
    14.  
    15. # Цифры
    16. $numbers = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
    17.  
    18. # Буквы
    19. $letters = array('A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H', 'h', 'I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z');
    20.  
    21.  
    22. # Генерация массива символов контрольной строки
    23. for($i = 0; $i < $symbols_num; $i++)
    24. {
    25.     $true_false = rand(1, 2); # =)
    26.  
    27.     if(fmod($true_false, 2))
    28.     {
    29.         $captcha_key_array[] = $numbers[rand(0, 9)];
    30.     }
    31.     else
    32.     {
    33.         $captcha_key_array[] = $letters[rand(0, 51)];
    34.     }
    35. }
    36.  
    37. $captcha_key = implode('', $captcha_key_array);
    38.  
    39.  
    40. # Берём щрифты
    41. $fonts_dir = opendir('fonts');
    42.  
    43. while(false !== ($module = readdir($fonts_dir)))
    44. {
    45.     if($module != '.' and $module != '..')
    46.     {
    47.         $fonts_array[] = $module;
    48.     }
    49. }
    50.  
    51. $fonts_num = count($fonts_array);
    52.  
    53. # Ширина-высота изображения
    54. $width = $symbols_num * 25;
    55. $height = 50;
    56.  
    57. # Создание изображения
    58. $image = imagecreatetruecolor($width, $height);
    59.  
    60.  
    61. # Рисуем фон
    62. $background  = imagecolorallocate($image, rand(230, 255), rand(230, 255), rand(230, 255));
    63.  
    64. imagefill($image, 0, 0, $background);
    65.  
    66.  
    67. # Рисуем "шахматную" доску
    68.  
    69. $cube_side = rand(8, 12); # размер грани квадратика
    70.  
    71. $q = 0;
    72.  
    73. while($q <= $height / $cube_side)
    74. {
    75.     $i = 0;
    76.  
    77.     while($i <= $width)
    78.     {
    79.         if(fmod($q, 2))
    80.         {
    81.             $cube_side = rand(8, 12); # Размер стороны квадратика
    82.             $color = imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));
    83.             imagefilledrectangle ($image, $i*2+$cube_side, $q*$cube_side, $i*2+$cube_side*2, $q*$cube_side+$cube_side, $color );
    84.         }
    85.         else
    86.         {   $cube_side = rand(8, 12); # Размер стороны квадратика
    87.             $color = imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255));
    88.             imagefilledrectangle ($image, $i*2, $q*$cube_side, $i*2+$cube_side, $q*$cube_side+$cube_side, $color );
    89.             //imagesetpixel($image, $i*2, $q*$cube_side, $black );
    90.             //imagefilledarc ($image, $i*2, $q*$cube_side, rand(8, 16), rand(5, 10), 0, 360, $color, IMG_ARC_PIE );
    91.             //imageellipse($image, $i*2, $q*$cube_side, 20, 10, $color );
    92.         }
    93.  
    94.         $i = $i + $cube_side;
    95.     }
    96.  
    97.     $q++;
    98. }
    99.  
    100.  
    101. # Рисуем строку
    102. $i = 10;
    103.  
    104. foreach($captcha_key_array as $index => $value)
    105. {
    106.     $x_position = rand(6, $height - 16);
    107.     $str_color = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));
    108.     $captcha_key_array = imagettftext($image, 25, rand(-30, 30), $i, rand(25, 45), $str_color, './fonts/'.$fonts_array[rand(0, $fonts_num-1)], $value);
    109.     $i = $i + rand(15, 25) ;
    110. }
    111.  
    112.  
    113. # Рисуем рамку
    114. $black = imagecolorallocate($image, 0, 0, 0);
    115.  
    116. imageline($image, 0, 0, 0, $height, $black); # left
    117. imageline($image, $width - 1, 0, $width - 1, $height, $black); # right
    118. imageline($image, $width, 0, 0, 0, $black); # up
    119. imageline($image, $width, $height - 1, 0, $height - 1, $black); # down
    120.  
    121.  
    122. # Выводим изображение в браузер
    123. [b]header ("Content-type: image/png");[/b]
    124. imagepng($image);
    125.  
    126. # Высвобождаем ресурсы
    127. imagedestroy($image);
    128.  
    129. ?>
    Шрифты лежат в папке fonts. Этот скрипт инклудится в определённый файл, но всё равно появляются эти крякозябры


    У меня картинка вроде не показывалась или чёт такое, уже не помню, т.к. уже фиг знает сколько этих скриптов капчи перепробовал О_о
     
  16. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Во многих капчах, которые я скачивал, не появляется картинка, вот этот скрипт работает в отдельном файле, а как только поставишь его в файл с сайта, то не появляется картинка:
    Код (Text):
    1. <?
    2. error_reporting(0);
    3. session_start ();
    4.  
    5. switch ($a) {
    6.     case 'image':
    7.         $im = @imagecreate (80, 20) or die ("Невозможно отобразить картинку");
    8.         $bg = imagecolorallocate ($im, 232, 238, 247);
    9.         $char = $_SESSION['code'];
    10.  
    11.         //создаём шум на фоне
    12.         for ($i=0; $i<=180; $i++) {
    13.             $color = imagecolorallocate ($im, rand(0,5), rand(0,55), rand(0,25)); //задаём цвет
    14.             imagesetpixel($im, rand(2,80), rand(2,20), $color); //рисуем пиксель
    15.         }
    16.  
    17.         //выводим символы кода
    18.         for ($i = 0; $i < strlen($char); $i++) {
    19.             $color = imagecolorallocate ($im, rand(0,255), rand(0,128), rand(0,255)); //задаём цвет
    20.             $x = 5 + $i * 22;
    21.             $y = rand(1, 8);
    22.             imagechar ($im, 5, $x, $y, $char[$i], $color);
    23.         }
    24.  
    25.         /*/упрощённый вариант
    26.         $color = imagecolorallocate($img, 0, 0, 0);
    27.         imagestring($im, 3, 5, 3, $char, $color);*/
    28.  
    29.         //антикеширование
    30.         header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    31.         header("Cache-Control: no-store, no-cache, must-revalidate");
    32.         header("Cache-Control: post-check=0, pre-check=0", false);
    33.         header("Pragma: no-cache");
    34.  
    35.         //создание рисунка в зависимости от доступного формата
    36.         if (function_exists("imagepng")) {
    37.            header("Content-type: image/png");
    38.            imagepng($im);
    39.         } elseif (function_exists("imagegif")) {
    40.            header("Content-type: image/gif");
    41.            imagegif($im);
    42.         } elseif (function_exists("imagejpeg")) {
    43.            header("Content-type: image/jpeg");
    44.            imagejpeg($im);
    45.         } else {
    46.            die("No image support in this PHP server!");
    47.         }
    48.         imagedestroy ($im);
    49.     break;
    50.     case 'submit':
    51.         //проверка кода
    52.         if (empty($_GET['code']) or empty($_SESSION['code'])) {
    53.             echo 'Вы не указали код подтверждения';
    54.         } elseif ($_GET['code'] != $_SESSION['code']) {
    55.             echo 'Код подтверждения не совпадает';
    56.         } else {
    57.             echo 'Всё Ok!';
    58.         }
    59.     break;
    60.     default:
    61.         $_SESSION['code'] = substr(md5(uniqid("")),0,4);
    62.         echo '<form action="proba.php" method="get">'.
    63.             '<input type="hidden" name="a" value="submit">'.
    64.             '<label for="code">Код подтверждения:</label>'.
    65.             '<input type="text" id="code" name="code" size="4" maxlength="4">'.
    66.             '<img align="absmiddle" src="?a=image">'.
    67.             '<input type="submit" value="Go">'.
    68.             '</form>';
    69.     break;
    70. }
    71. ?>
    Что самое интересное - скрипты капч работают прекрасно в своих же файлах, а как только я перемещу скрипт в файл сайта - не работает (либо каракули, либо картинку не открывает)
     
  17. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Значит дело не в капче, а в твоих скриптах!
    Я подозреваю что ты его не правильно инклудишь... т.е. ты скорее всего делаешь так:

    include 'captcha_img.php';

    А надо так:

    echo '<img src="captcha_img.php">';

    )))
     
  18. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Вот ё)) Я бы не догадался, теперь всё работает, спасибо большое:)
     
  19. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    А как теперь эту капчу (капчу от hight - http://www.php.ru/forum/viewtopic.php?p=177412#177412) прикрутить к форме отправки сообщения, я не могу понять, что нужно сравнивать через if-else
    Или скачать другую капчу...)
     
  20. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Jensi, это к hight'у в личку )
     
  21. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    вот:
    Скачать captcha.zip с OpenFile.ru
    Новая версия старой капчи. Можете делать с ней всё, что захотите.
     
  22. MihaPog

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

    С нами с:
    19 июл 2009
    Сообщения:
    1
    Симпатии:
    0
  23. mpak

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

    С нами с:
    30 окт 2006
    Сообщения:
    440
    Симпатии:
    0
    У меня после нескольких обновлений высвителось это.

    Warning: file_get_contents(http://dsfile.com/capcha.php?get=img&ke ... g=&cap_cl=) [function.file-get-contents]: failed to open stream: HTTP request failed! in /home2/web-portfolioru/test/capcha.inc on line 48