Методичні вказівки до практичної роботи
на тему
«Розробка CAPTCHA »
Теоретичні відомості
CAPTCHA - це абревіатура від англійських слів "Completely Automatic Public Turing Test to Tell Computers and Humans Apart" - повністю автоматичний тест Тьюринга для розрізнення комп'ютерів і людей. Іншими словами, це завдання, яке легко вирішує людина, але яке неможливо (або вкрай важко) навчити вирішувати комп'ютер.
Застосовується CAPTCHA для того, щоб запобігти чисельних автоматичних реєстрацій та відправлення повідомлень програмами-роботами. Тобто завдання CAPTCHA – це захист від спаму, флуду і захоплення акаунтів.
Найчастіше CAPTCHA виглядає як зашумлене випадкове число, слово чи інший напис, який користувачеві потрібно прочитати і ввести прочитаний результат, хоча існують і інші алгоритми.
Бібліотек, які реалізують капчі достатньо, але працюють всі за одним алгоритмом:
1. Генерується рядок, який буде потім переведений на картинку.
2. Рядок зберігається у змінній сесії.
3. Після введення користувачем значення в input, воно порівнюється з рядком їх сесійного змінної.
4. Цей алгоритм виключає можливість того, що віддалений скрипт отримає значення початкового рядка.
Одним з прикладів утворення капчі є наступний, що найчастіше використовується для генерування цифрової CAPTCHA. По-перше, необхідно створити графічні зображення, що відповідають кожній цифрі. Далі з використанням однієї з функцій випадкового вибору (наприклад, mt_rand(0,9)), у циклі потрібно вивести відповідні зображення.
Другим варіантом створення CAPTCHA можна вважати наступний.
1) По-перше, необхідно створити масив символів.
2) Створити пусте зображення
$img = imagecreatetruecolor($width, $height);
3) Створити колір фону та заливку
$fon = imagecolorallocate($img, 206, 176, 147);
imagefill($img, 0, 0, $fon);
4) Накласти на зображення захисний код в циклі
$color = imagecolorallocatealpha(
a. Згенерувати випадковий символ
b. Згенерувати координати виведення
c. Вивести символ
imagestring($img, 6 ,$x, $y, $letter, $color);
d. Помістити код в сесію
$_SESSION['code'] = $code;
5) Вивести зображення
header ("Content-type: image/jpeg",false);
imagejpeg($img);
Завдання
Розробити скрипт реєстрації користувачів з елементом CAPTCHA.
Функціяimagecolorallocatealpha
Функція повертає ідентифікатор кольору для зображення
int imagecolorallocatealpha (resource image, int red, int green, int blue, int alpha)
Поведінка функції та її параметри аналогічні функції imagecolorallocate () за винятком параметра alpha, який визначає прозорість.
Значення параметра alpha лежать в діапазоні від 0 до 127. Значення alpha = 0 визначає повну непрозорість. Значення alpha = 127 відповідає повністю прозорогокольору.
Функціяimagecreatetruecolor
Функція imagecreatetruecolor - утворює нове зображення.
resource imagecreatetruecolor (int x_size, int y_size)
Функція imageColorAllocate
Функція створення нового кольору та занесення його в палітру рисунка.
int imageColorAllocate(int im, int red, int green, int blue)
Функція imagefill
imagefill () виконує заливку, починаючи з координат x, y (верхній лівий кут має координати 0, 0), кольором col на зображенні image.
int imagefill (resource image, int x, int y, int col)
Функція imagejpeg
Виводить зображення в браузер або файл.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.