Оказывается ReCaptcha - отличный сервис! Но поздно, я уже свой велосипед изобрел... осталось сделать его просто лучше )))
т.е, если dsfile.com упадёт, мои все пользователи будут.. ммм как бы это сказать помягче... вобщем потеряют возможность публиковать посты... Автоматизация это гуд, я только за, но вижу немного по другому: почему бы не разбить на 2 части иначе: Пусть капча генерится и проверяется с моего сервака например, а новые версии у тебя на серваке, и маленькая функция по обновлению скриптов с твоего сервака на мой, через ftp например? Это даст возможность строго не зависить от dsfile.com, также прирост в скорости отдачи и снизит нагрузку у тебя, и даст тебе возможность дорабатывать скрипты и вести подписку по обновлению своей капчи. не?
Сервер надежный, стоит кажись в америке у проф. хостинговой компании ))) Теоритичесски можно предоставлять и файл который отвечает за генерацию и сравнение капчи... тогда надо немного переработать алгоритм кодирования и привязать его к некому ключу, что бы на каждом сайте, где установлен этот скрипт, алгоритм кодирования был уникальным... Но этот сервис предназначен в первую очередь для новичков в PHP и для ленивых профессионалов, он максимально упращен в установке и использовании, а если выкладывать дистрибутив - к нему надо писать инструкцию по установке... тогда уже проще самому написать полностью проверку... )))
ну да каждому своё, думаю этот проект - хак амерекосов =) Кто нить поставит в цикл генерицаю капчи и сервак будет удивлён от количества запросов... какие меры безопасности предпринимаются? =)
Mat Делать капчу на генерацию капчи? ))) Да мне пофиг, пусть сервер напрягается, там запас по ресурсам оочень большой! Я его использую только под хранилище файлов - там объем 50Gb! (это самый большой по объему хостинг который я нашел за 3$ в месяц))) P.S. Посмотрел - сервак в Англии )))
я вот все не пойму, а нафига такие сервисы нужны? зачем привязываться к стороннему ресурсу ради какой то капчи?
S.t.A.M. Да все ок, а то все критикуют. Отличная вешь, думаю поможет тем кому лень делать самому, а если еще будет и качественной будет вообще отлично.
не-не, я тоже считаю, что это хороший сервис, пускай развивается и все такое. Просто мне он совершенно не нужен. Да и курла нет ни на хостинге ни дома.
kostyl Спасибо, на добром слове! ))) С подачи Mr.M.I.T. решил, что спокойно могу обойтись без cURL'а, буду использовать file_get_content
А у меня постоянно отображается подобное этому: Код (Text): ‰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* &кќ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_ ‚HЋИлџЄѕ‰“Ѓ7RоБлЊfDЗџЁqkhкФv]”р?†ї°БЌ”{PBоA №GЂKAк7 И так на всех капчах, что делать с этим?
Не катит, там есть header, вот скрипт (скрипт от hight): Код (Text): <?php # # 2006-2008 (c) Hight | hight@inbox.ru # header('Cache-Control: private, no-cache="set-cookie"'); header('Expires: 0'); header('Pragma: no-cache'); # Кол-во символов в строке $symbols_num = 6; # Цифры $numbers = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); # Буквы $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'); # Генерация массива символов контрольной строки for($i = 0; $i < $symbols_num; $i++) { $true_false = rand(1, 2); # =) if(fmod($true_false, 2)) { $captcha_key_array[] = $numbers[rand(0, 9)]; } else { $captcha_key_array[] = $letters[rand(0, 51)]; } } $captcha_key = implode('', $captcha_key_array); # Берём щрифты $fonts_dir = opendir('fonts'); while(false !== ($module = readdir($fonts_dir))) { if($module != '.' and $module != '..') { $fonts_array[] = $module; } } $fonts_num = count($fonts_array); # Ширина-высота изображения $width = $symbols_num * 25; $height = 50; # Создание изображения $image = imagecreatetruecolor($width, $height); # Рисуем фон $background = imagecolorallocate($image, rand(230, 255), rand(230, 255), rand(230, 255)); imagefill($image, 0, 0, $background); # Рисуем "шахматную" доску $cube_side = rand(8, 12); # размер грани квадратика $q = 0; while($q <= $height / $cube_side) { $i = 0; while($i <= $width) { if(fmod($q, 2)) { $cube_side = rand(8, 12); # Размер стороны квадратика $color = imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255)); imagefilledrectangle ($image, $i*2+$cube_side, $q*$cube_side, $i*2+$cube_side*2, $q*$cube_side+$cube_side, $color ); } else { $cube_side = rand(8, 12); # Размер стороны квадратика $color = imagecolorallocate($image, rand(150, 255), rand(150, 255), rand(150, 255)); imagefilledrectangle ($image, $i*2, $q*$cube_side, $i*2+$cube_side, $q*$cube_side+$cube_side, $color ); //imagesetpixel($image, $i*2, $q*$cube_side, $black ); //imagefilledarc ($image, $i*2, $q*$cube_side, rand(8, 16), rand(5, 10), 0, 360, $color, IMG_ARC_PIE ); //imageellipse($image, $i*2, $q*$cube_side, 20, 10, $color ); } $i = $i + $cube_side; } $q++; } # Рисуем строку $i = 10; foreach($captcha_key_array as $index => $value) { $x_position = rand(6, $height - 16); $str_color = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150)); $captcha_key_array = imagettftext($image, 25, rand(-30, 30), $i, rand(25, 45), $str_color, './fonts/'.$fonts_array[rand(0, $fonts_num-1)], $value); $i = $i + rand(15, 25) ; } # Рисуем рамку $black = imagecolorallocate($image, 0, 0, 0); imageline($image, 0, 0, 0, $height, $black); # left imageline($image, $width - 1, 0, $width - 1, $height, $black); # right imageline($image, $width, 0, 0, 0, $black); # up imageline($image, $width, $height - 1, 0, $height - 1, $black); # down # Выводим изображение в браузер [b]header ("Content-type: image/png");[/b] imagepng($image); # Высвобождаем ресурсы imagedestroy($image); ?> Шрифты лежат в папке fonts. Этот скрипт инклудится в определённый файл, но всё равно появляются эти крякозябры У меня картинка вроде не показывалась или чёт такое, уже не помню, т.к. уже фиг знает сколько этих скриптов капчи перепробовал О_о
Во многих капчах, которые я скачивал, не появляется картинка, вот этот скрипт работает в отдельном файле, а как только поставишь его в файл с сайта, то не появляется картинка: Код (Text): <? error_reporting(0); session_start (); switch ($a) { case 'image': $im = @imagecreate (80, 20) or die ("Невозможно отобразить картинку"); $bg = imagecolorallocate ($im, 232, 238, 247); $char = $_SESSION['code']; //создаём шум на фоне for ($i=0; $i<=180; $i++) { $color = imagecolorallocate ($im, rand(0,5), rand(0,55), rand(0,25)); //задаём цвет imagesetpixel($im, rand(2,80), rand(2,20), $color); //рисуем пиксель } //выводим символы кода for ($i = 0; $i < strlen($char); $i++) { $color = imagecolorallocate ($im, rand(0,255), rand(0,128), rand(0,255)); //задаём цвет $x = 5 + $i * 22; $y = rand(1, 8); imagechar ($im, 5, $x, $y, $char[$i], $color); } /*/упрощённый вариант $color = imagecolorallocate($img, 0, 0, 0); imagestring($im, 3, 5, 3, $char, $color);*/ //антикеширование header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); //создание рисунка в зависимости от доступного формата if (function_exists("imagepng")) { header("Content-type: image/png"); imagepng($im); } elseif (function_exists("imagegif")) { header("Content-type: image/gif"); imagegif($im); } elseif (function_exists("imagejpeg")) { header("Content-type: image/jpeg"); imagejpeg($im); } else { die("No image support in this PHP server!"); } imagedestroy ($im); break; case 'submit': //проверка кода if (empty($_GET['code']) or empty($_SESSION['code'])) { echo 'Вы не указали код подтверждения'; } elseif ($_GET['code'] != $_SESSION['code']) { echo 'Код подтверждения не совпадает'; } else { echo 'Всё Ok!'; } break; default: $_SESSION['code'] = substr(md5(uniqid("")),0,4); echo '<form action="proba.php" method="get">'. '<input type="hidden" name="a" value="submit">'. '<label for="code">Код подтверждения:</label>'. '<input type="text" id="code" name="code" size="4" maxlength="4">'. '<img align="absmiddle" src="?a=image">'. '<input type="submit" value="Go">'. '</form>'; break; } ?> Что самое интересное - скрипты капч работают прекрасно в своих же файлах, а как только я перемещу скрипт в файл сайта - не работает (либо каракули, либо картинку не открывает)
Значит дело не в капче, а в твоих скриптах! Я подозреваю что ты его не правильно инклудишь... т.е. ты скорее всего делаешь так: include 'captcha_img.php'; А надо так: echo '<img src="captcha_img.php">'; )))
А как теперь эту капчу (капчу от hight - http://www.php.ru/forum/viewtopic.php?p=177412#177412) прикрутить к форме отправки сообщения, я не могу понять, что нужно сравнивать через if-else Или скачать другую капчу...)
вот: Скачать captcha.zip с OpenFile.ru Новая версия старой капчи. Можете делать с ней всё, что захотите.
У меня после нескольких обновлений высвителось это. 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