admin / 17.12.2017

Капча — Википедия

QAlt / Полезные статьи, скрипты / 13 ноября 2013г, среда

Капча (CAPTCHA) на PHP

Сегодня ни одного пользователя Интернет не удивишь капчей (или CAPCHA, от англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей). Каждый, кто хоть раз регистрировался на каком-нибудь форуме, крупном сервисе или просто оставлял где-то комментарий, обязательно вводил непонятные букво-циферные коды. Для чего эти коды? Они препятствуют ботам совершать различные действия по распространению спама.

В этой статье мы разберёмся, как же работает капча. А для начала несколько примеров капч:

    

Капчи бывают плохочитаемые и нечитаемые! =)

Так, чем сложнее капча, тем сложнее её распознать не только роботу, но и человеку.

Как работает captha

  • На сервере автоматически генерируется случайный код, и создаётся картинка с этим кодом.
  • Код запоминается в сессию.
  • Затем, картинка деформируется, искажается и добавляются шумы.
  • Готовая картинка показывается пользователю в браузере.
  • После отправки формы введённые символы сравниваются с символами в сессии, если они совпали, значит код капчи введён верно.

Пишем свою капчу

Готовый вариант можно потестировать тут.

Проще всего генерацию капчи вынести в отдельный файл, который будет на выходе отдавать готовую картинку. 

Приступим…

Создадим 3 файла:

  1. index.html — тут будет форма для ввода капчи
  2. capcha.php — генерация капчи
  3. result.php — проверка на правильность введённого кода

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 – проверка, разработанная Гугл. Чтобы ее пройти, нужно всего лишь поставить галочку в квадратик возле «Я не робот».

Обычно через пару секунд после этого появляется птичка зеленого цвета – значит, капча пройдена.

Но бывает системе этого недостаточно и открывается окошко, где нужно выбрать картинки определенного вида. Например, все фотографии, где есть витрины. Значит, нужно щелкнуть по каждой из них левой кнопкой мышки.

Текстовые/цифровые капчи. В окошко нужно ввести кривоватые буквы/цифры, изображенные на картинке. Обычно английские, но бывают и русские.

Часто для удобства есть кнопка, нажав на которую картинка поменяется. Это нужно в случае, если буквы сложно разобрать.

Капча (CAPTCHA) на PHP

Ну, или, когда вроде бы всё печатаешь верно, а система не пускает – выдает ошибку.

А еще бывает кнопка, которая озвучивает то, что написано. Нажав на нее, вы услышите голос, который проговорит буквы/цифры с картинки.

Образные. Это капчи в виде картинок. Как правило, нужно просто выбрать подходящее изображение:

Логические. В этом случае нужно решить какую-то задачку. Обычно она несложная: типа напечатайте, сколько будет 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?

  • The Internet Captcha is free to put in your web.
  • It have a configurator to define the view and a lot of visual efects to do your captcha unique. Icaptcha is designed in Javascript.

    Капча на PHP

  • Security level is configuable too, you can fix distortion, number turn, distance betwen numbers and doping elements to make difficult automatically detect the code.
  • The captcha is validated in the main form and if you fail the correct code, the system can be generate other code in the same page whitout reload.
  • The captcha no need alter any image in memeory and have low cpu usage to the server.
  • Icaptcha is HTML5 compliant and it is compliant with more famous browsers including Internet Explorer 6 and upper.

         

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.

IF YOU LIKE IT, SHERE IT.

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; цвет линий.

Делаем капчу на PHP: установка reCAPTCHA и код с нуля

Линии я использовал в качестве так называемого шумового эффекта.

И на последок , мы после цикла записываем полученный код в Сессию для дальнейшего сравнения с кодом который отправит нам пользователь

Полный код файла captcha.php будет выглдеть так:

Теперь проверяем как все работает. Заходим в файл index.php, где находиться наша форма авторизации . Там должна генерироваться наша картинка с проверочным кодом. Вводим произвольные данные и проверочный код с картинки. В результате если код введен верно должно отобразиться сообщение что форма отправлена.

Проверочный код предназначен прежде всего для безопасности: защиты от спама и флуда и т.п. Поэтому лучше такой мерой защиты не пренебрегать!

На этом дорогие друзья данная статья подошла к концу, скажу на последок что google предлагает возможность использования своей капчи 'Я не робот' или recaptcha .

А на этом все. Я надеюсь данная статья была для вас содержательна и полезна. Удачи!

КОММЕТАРИИ

Оставлять комментарии можно только зарегистрированным пользователям

В данном разделе пока нет комментариев!

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*