Что такое капча? Как ввести или убрать капчу.
4
Фев
Для защиты сайта от регистрации ботов используют так называемый тест Тьюринга. В простонародии он называется капча (CAPTCHA). Я решил сделать капчу (captcha) используя php. Об этом и пойдёт разговор в этой заметке.
Что же по сути такое тест Тьюринга. А это проверка, является ли пользователь живым человеком или ботом. Устанавливается задача, которую человек решит легко, а для программного решения потребуется очень много ресурсов. Обычно задачей является распознавание текста на картинке. Для усложнения распознования картинки с помощью компьютера добавляют к изображению дополнительные линии и шумы. Исходя из выше изложенной информации, напрашивается вывод, что мы должны научиться генерировать изображения с помощью php. Для работы с графикой в php существует библиотека GD2. Давайте сначала её подключим и разберёмся как с её помощью сделать captcha для сайта.
Подключение библиотеки GD2 к PHPНаходим в папке: C:\Program Files\PHP\ext файл php_gd2.dll (это и есть библиотека), и копируем в c:\windows . В файле c:\windows\php.ini находим строку extension=php_gd2.dll и раскоментируем. Не забываем перезапустить apache. У меня веб сервер apache стоит на windows. заметка как я его ставил. Так что процесс установки GD2 может у вас отличаться от моего. Теперь давайте разберём основные функции GD2.
Функции библиотеки GD2 PHP Создание и генерация изображения РисованиеimageAntiAlias($myimg, true) | Сглаживание (antialiasing) |
$mycolor = imageColorAllocate($myimg, 255, 0, 0) | Определение цвета |
imageLine($myimg, 25, 25, 70, 290, $mycolor); | Рисуем линии, цифры это координаты точек |
imageRectangle($myimg, 25, 25, 70, 290, $mycolor); | Рисуем прямоугольник, цифры это координаты углов |
imageFilledRectangle ($myimg, 20, 20, 65, 295, $mycolor); | Заливка фона |
$points = array(0,0,110,210,310,210); imagePolygon($myimg, $mypoints, 3, $mycolor); imageFilledPolygon ($myimg, $mypoints, 3, $mycolor); | Рисуем многоугольник |
imageEllipse ($myimage, 200, 150, 300, 200, $color); | Рисуем эллипс. Первые 2е цифры координаты центра эллипса, 2е 2е высота и ширина эллипса (x, y) |
imageString ($myimage, 3, 130, 350, "Hai", $mycolor); | Рисуем строку текста. 1я цифра размер шрифта (max 5) |
imageTtfText ($myimg, 30, 10, 310, 160, $mycolor, "my.ttf", "Hai"); | Рисуем строку текста. Применяем TrueType-шрифты. 1я цифра размер шрифта, 2я угол наклона, 3-4 координаты бокса, шрифт, текст |
$myimg = imageCreateFromJPEG("myimage.jpg"); $myimg = imageCreateFromGIF("myimage.gif"); $myimg = imageCreateFromPNG("myimage.png"); | Делаем новое изображения на базе имеющегося |
Теперь мы обладаем нужной информацией для создания капчи (captcha) php. Я написал свой небольшой класс, который генерирует картинку капчи. Файл с классом называется mycaptcha.php . Листинг ниже.