Captcha в PHP и GD
CAPTCHA разработка
Капча за рисуване
За да нарисувате captcha, трябва да инсталирате библиотеката GD (Graphics Draw). Тази библиотека рисува графики и изображения, използвайки вградени функции в PHP.
Инсталиране на GD
За да инсталирате GD на Ubuntu, стартирайте sudo apt-get install php5-gd .
В Windows трябва да активирате модула GD2 DLL php_gd2.dll в php.ini. Старият модул GD1 DLL php_gd.dll беше премахнат в PHP 4.3.2. Функциите за работа с пълноцветни изображения като imagecreatetruecolor () изискват GD2.
За да подобрите възможностите на GD библиотеката да работи с голям брой формати на изображения, използвайте опцията —С-XXXX по време на PHP конфигурация.
Създаване на капча в PHP
Captcha обикновено се състои от 3 неща: форма, изкривяване и текст .
Ще следваме стъпките по-долу:
Показване на празно изображение
Капча изображението ще се покаже като външно изображение, като се използва прост таг "img", използван в HTML. Това изисква две функции, едната е да създаде изображението, а другата да го изведе в браузъра.
Първият ред показва, че потребителят е на страницата за captcha.
Във функция дисплей () нищо повече от обикновен HTML код, който извежда изображението в браузъра.
Във функцията create_image () се използва променлива, за да се обозначи изображението, върнато от функцията imagecreatetruecolor (), която взема дължината и ширината на изображението като свои аргументи. Функцията imagepng () създава png изображение по посочения път и име (в същата директория).
Ако сте направили всичко правилно, captcha изображението на страницата ще бъде под формата на черен правоъгълник.

Моля, обърнете внимание, че функцията imagepng () ще бъде последният ред на нашата функция и всички следващи стъпки трябва да бъдат вмъкнати във функцията create_image () преди извикване на тази функция, в противен случай те няма да влязат в сила.
Фигура за капча
Формата за captcha може да бъде всяка, в нашия пример captcha, правоъгълник с ширина 200, височина 50, това е стойността на функцията imagefilledrectangle () и цвета на фона. Можете да използвате друга функция като елипса, кръг и т.н.
Функцията imagecolorallocate () приема променлив цвят, където цветът е RGB като аргументи. Следният код ще бъде добавен към функцията create () .
След добавяне на кода, правоъгълникът на captcha трябва да е бял.
Генериране на произволни линии.
В нашия пример редовете са необходими за изкривяване captcha изображение за размито четене. В PHP се изчертават линии от началната точка (x1, y1) до крайната точка (x2, y2). Сега, как да накараме нашите линии да пресичат полето captcha, ще имаме координати, т.е. ширината на нашия правоъгълник. Координатите се генерират на случаен принцип. Това ще създаде линии под различни ъгли. Ще генерираме само няколко реда, като поставим тази функционалност в цикъл for.
Функцията imageline () приема координати x1, x2, y1, y2 като аргументи. Цветът на линията е избран само като цвят на фона, както в предишната стъпка.
y са координати като rand () *% 50, защото това е височината на нашето captcha поле и винаги ще връща стойност под 50. Като алтернатива можете да използвате rand (0.50) .
След добавяне на произволни редове, правоъгълникът captcha трябва да изглежда по следния начин:

Генерирайте произволни точки.
Случайни точки ще бъдат генерирани по същия начин като случайните линии. Това се прави с помощта на функцията imagesetpixel (). Тази функция приема стойността на координатите, където точките ще бъдат поставени в полето за капча.