admin / 17.12.2017
QAlt / Полезные статьи, скрипты / 13 ноября 2013г, среда
Содержание
Сегодня ни одного пользователя Интернет не удивишь капчей (или CAPCHA, от англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей). Каждый, кто хоть раз регистрировался на каком-нибудь форуме, крупном сервисе или просто оставлял где-то комментарий, обязательно вводил непонятные букво-циферные коды. Для чего эти коды? Они препятствуют ботам совершать различные действия по распространению спама.
В этой статье мы разберёмся, как же работает капча. А для начала несколько примеров капч:
Капчи бывают плохочитаемые и нечитаемые! =)
Так, чем сложнее капча, тем сложнее её распознать не только роботу, но и человеку.
Готовый вариант можно потестировать тут.
Проще всего генерацию капчи вынести в отдельный файл, который будет на выходе отдавать готовую картинку.
Приступим…
Создадим 3 файла:
index.html
<html> <body> <form action="result.php" method="post"> <img src="captcha.php" /> <input type="text" name="code" value="" /> <input type="submit" value="Отправить" /> </form> </body> </html>
captcha.php
<?php session_start(); //включаем сессию $width = 100; //Ширина изображения $height = 50; //Высота изображения $font_size = 16; //Размер шрифта $let_amount = 4; //Количество символов, которые нужно набрать $fon_let_amount = 30; //Количество символов на фоне $font = "OPTIMA.TTF"; //Путь к шрифту //набор символов $letters = array("a","b","c","d","e","f","g","k","m","n","p","r","s","t","u","w","x","y","z","3","4","6","7","8","9"); //цвета $colors = array("90","110","130","150","170","190","210"); $src = imagecreatetruecolor($width,$height); //создаем изображение $fon = imagecolorallocate($src,255,255,255); //создаем цвет фона imagefill($src,0,0,$fon); //заливаем изображение фоновым цветом //добавляем на фон маленькие буковки для шума for ($i=0; $i < $fon_let_amount; $i++) { //случайный цвет $color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100); //случайный символ $letter = $letters[rand(0,sizeof($letters)-1)]; //случайный размер $size = rand($font_size-2,$font_size+2); //рисуем символ со случайным смещением и случайным углом наклона imagettftext($src, $size, rand(0,45), rand($width*0.1,$width-$width*0.1), rand($height*0.2,$height), $color, $font, $letter); } $code = array(); //то же самое для основных букв for ($i=0; $i < $let_amount; $i++) { $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)], $colors[rand(0,sizeof($colors)-1)], $colors[rand(0,sizeof($colors)-1)],rand(20,40)); $letter = $letters[rand(0,sizeof($letters)-1)]; $size = rand($font_size*2-2,$font_size*2+2); $x = ($i+1)*$font_size + rand(1,5); //даем каждому символу случайное смещение $y = (($height*2)/3) + rand(0,5); // относительно центра картинки $code[] = $letter; //запоминаем код imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter); } $code = implode("",$code); //склеиваем символы в одну строку $_SESSION['captcha'] = $code; //запоминаем код в сессию header ("Content-type: image/gif"); //выводим заголовок картинки imagegif($src); //выводим саму картинку ?>
result.php
<?php session_start(); //включаем сессию if (isset($_POST['code'])) //если отправлена форма { if ($_POST['code'] == $_SESSION['captcha']) { echo "Код введён ВЕРНО!"; }else{ echo "Допущена ОШИБКА!"; } } ?>
Вот и всё, защита от спам-ботов готова к применению. Конечно она не гарантирует 100% избавление от роботов, но существенно упростит работу модераторам.
Список всех статей »
Капча (captcha) — это защитный код, который вводится на страницах Интернета в ряде случаев. Смысл этой штуки заключается в том, чтобы автоматические программы (так называемые «боты») не смогли пробиться на сайт.
В большинстве случаев, капча — это сочетание букв, цифр, букв и цифр, а также образные картинки, смысл которых нужно ввести в окошко.
Но бывают и более хитрые варианты. Например, нужно решить уравнение, выбрать из нескольких картинок определенную или сделать что-нибудь еще.
Пока вы это не сделаете, сайт для вас будет заблокирован, то есть выполнить на нем определенные (нужные вам) действия не получится.
Дело в том, что сейчас есть куча разных программ, которые могут автоматически что-то делать в Интернете. Например, рассылать рекламу, публиковать фальшивые отзывы. И вот чтобы они не смогли этого сделать, владельцы сайтов ставят подобную защиту.
Например, есть страница в Интернете, где посетители оставляют отзывы о некоем продукте.
Любой человек может заполнить несколько полей (имя, адрес почты) и отправить на сайт свое сообщение, где оно и будет опубликовано.
Эти действия легко сымитировать программой. Ее можно «научить» заполнять поля и публиковать нужные отзывы, чем и пользуются мошенники (спамеры). Поэтому и была придумана капча – ведь такую штуку программа не введет, а, значит, не сможет опубликовать сообщение.
Но капча появляется и в других случаях. Например, вы просто общаетесь на своей страничке Вконтакте, и вдруг ни с того ни с сего она возникает. Пока вы ее не пройдете, на сайте ничего сделать не получится.
Это происходит потому, что системе показалось подозрительным что-то в ваших действиях. Например, вы слишком быстро отвечали на сообщения, и сайт заподозрил, что это делает не человек, а программа (бот).
И приходится вводить в окошко то, что нарисовано на картинке. Оно, конечно, не очень удобно, зато защищает страницы от взлома.
Следует заметить, что применение капчи всё равно не спасает сайты от рекламы, взломов и прочих нехороших вещей. Но всё-таки избавляет их от излишне настойчивых притязаний.
Рассмотрим несколько самых распространенных вариантов. Начнем с самого простого.
reCAPTCHA – проверка, разработанная Гугл. Чтобы ее пройти, нужно всего лишь поставить галочку в квадратик возле «Я не робот».
Обычно через пару секунд после этого появляется птичка зеленого цвета – значит, капча пройдена.
Но бывает системе этого недостаточно и открывается окошко, где нужно выбрать картинки определенного вида. Например, все фотографии, где есть витрины. Значит, нужно щелкнуть по каждой из них левой кнопкой мышки.
Текстовые/цифровые капчи. В окошко нужно ввести кривоватые буквы/цифры, изображенные на картинке. Обычно английские, но бывают и русские.
Часто для удобства есть кнопка, нажав на которую картинка поменяется. Это нужно в случае, если буквы сложно разобрать.
Ну, или, когда вроде бы всё печатаешь верно, а система не пускает – выдает ошибку.
А еще бывает кнопка, которая озвучивает то, что написано. Нажав на нее, вы услышите голос, который проговорит буквы/цифры с картинки.
Образные. Это капчи в виде картинок. Как правило, нужно просто выбрать подходящее изображение:
Логические. В этом случае нужно решить какую-то задачку. Обычно она несложная: типа напечатайте, сколько будет 6 + 3. Значит, в уме (ну, или на калькуляторе) нужно сложить эти два числа, а результат напечатать в окошко.
Или, например, нужно ответить на какой-то вопрос, разгадать загадку.
В любом случае, никто вас за это оценивать не будет. Просто таким образом система пытается отсеять автоматические регистрации. Если вы напечатаете правильный ответ, она вас пустит дальше. Ну, а если нет, то предложит попробовать ввести капчу еще раз, но уже другую.
Generate another code
WHAT IS INTERNET CAPTCHA?
Internet Captcha is designed to protect your html forms where users send information to others users or databases.
A informatic robot can automatic send a lot of information, saturating your system or it can send you spam continuously to publish. With this captcha only human can complete the security code and only a human will be able to use your web page.
WHY DO YOU MUST USE THIS CODE?
HOW COULD YOU PUT THE CAPTCHA?
1 — CONFIGURE YOUR CAPTCHA.
Press Here
2 — PUT CORRECT FILES IN YOUR WEB DIRECTORY.
Download Here
3 — YOU HAVE YOUR WEB PROTECTED.
Tweet
Всем привет, сегодня мы рассмотрим как сделать капчу или по другому проверочный код своими руками.
Прежде всего следует понимать что капча которую мы будем делать представляет собой картинку (png, jpg или gif) на которой изображен шифр(код ) который необходимо ввести пользователю.
Рассмотрим подробнее на форме авторизации, cоздадим три файла:
index.php — Файл с формой авторизации
login.php — Файл с обработчиком
сaptcha.php — файл генерирующий капчу
В файле index.php
Как видите здесь ничего сложного нет, в качестве пути к картинке мы используем путь к файлу captcha.php
В файле обработчике login.php
В файле обработчике как видите мы тщательно проверяем совпадает ли код который передал нам пользователь с содержимым Сесси captcha , которую мы будем генерировать в файле captcha.php.
И так, давайте теперь разберемся с содержимым файла captcha.php, здесь нам необходимо сгенерировать изображение с помощью php:
Первое что мы делаем:
Создаем дескриптор изображения, задаем размеры и делаем фон:
$img — дескритор изображения,; 130,24 — ширина и высота; 0,0 — координаты начала заливки; 0xFFFFFF — белый цвет данная запись эквивалентна (#fffff)
Едем дальше и создадим четыре переменных:
$x = 0;//Координата x символа
$i = 1;//Координата y символа
$code = '';//Код
$str = «abcdefghijklnmopqrstuvwxyzABCDEFGHIJKLNMOPQRSTUVWXYZ0123456789»;//варианты символы которые будут присутствовать в нашем коде
Далее нам необходимо сгенерировать наш проверочный код
пишем цикл for:
смотрим что у нас тут получилось.
imagettftext — эта функция отвечает за генерацию текста с расширением ttf на изображении.
imagettftext (Дескриптор изображения, Размер текста, Угол наклона текста, Координата текста по X, Координата текста по Y, Цвет текста, Шрифт текста, текст);
Цвет текста генерируется с помощью функции imagecoloralLocate которой передается дескриптор изображения и три числовых параметра rgb.
Следует еще заметить что нам нужен шрифт с расширением ttf, в нашем случае это verdana.ttf поэтому вы должны закинуть этот шрифт рядом с файлом captcha.php или прописать до него путь.
Как видите на каждой итерации цикла у нас генерируется случайный символ из строки srt и с помощью функции rand() генерируются случайные величины параметров в определенных интервалах.
Все символы записываются:
imageline — Функция которая рисует линию в качестве аргументов принимаются дескриптор изображения, начальная и конечная координаты x, y; цвет линий.
Линии я использовал в качестве так называемого шумового эффекта.
И на последок , мы после цикла записываем полученный код в Сессию для дальнейшего сравнения с кодом который отправит нам пользователь
Полный код файла captcha.php будет выглдеть так:
Теперь проверяем как все работает. Заходим в файл index.php, где находиться наша форма авторизации . Там должна генерироваться наша картинка с проверочным кодом. Вводим произвольные данные и проверочный код с картинки. В результате если код введен верно должно отобразиться сообщение что форма отправлена.
Проверочный код предназначен прежде всего для безопасности: защиты от спама и флуда и т.п. Поэтому лучше такой мерой защиты не пренебрегать!
На этом дорогие друзья данная статья подошла к концу, скажу на последок что google предлагает возможность использования своей капчи 'Я не робот' или recaptcha .
А на этом все. Я надеюсь данная статья была для вас содержательна и полезна. Удачи!
Оставлять комментарии можно только зарегистрированным пользователям
В данном разделе пока нет комментариев!
FILED UNDER : IT