Създаване на CAPTCHA (капитан) в PHP

С течение на времето, мястото набира популярност, а има нужда от защита от спам ботове. В тази статия ще ви кажа как можете да създадете свой собствен капитан в PHP.

CAPTCHAs се използват, като правило, при извършване на каквито и да било форми на уебсайта. Алгоритъмът работи, както следва: за формиране на изображение-тест е налице и някои случайни поредица от знаци. има поле за въвеждане на съдържание на капитан на потребителя до него. Изображение, всъщност, е PHP-скрипт, който генерира. В този случай, генерирано съдържание за проверка по текст се съхранява някъде. При подаване на формуляр, скрипт сравнява съхранява стойността на CAPTCHA, че потребителят е въвел. Ако да съответстват на стойностите, след заявлението е прието или отхвърлено.

Предлагам изпълнението е много проста, в същото време, той има поддръжка за шрифтове TrueType, както и алфа канал (прозрачен фон), така че CAPTCHA е подходящ във всеки дизайн.

Имайте предвид, че е необходимо сценария за разширение на PHP-GD, свържете го в настройките.

Първо трябва да вземе решение за вида. В съответствие с избрания шрифт TTF-файл, трябва да се постави в директорията с бъдещ сценарий капитан. Аз избрах за комичното на CAPTCHA шрифта Sans MS. тя отговаря comic.ttf файл. Шрифта файлове могат да бъдат намерени в системната директория на вашата операционна система шрифтовете, или да се изтеглят от интернет.

На следващо място, за captcha.php скрипт. В началото на променливите сценария са обявени необходимо:

В низ прехвърля азбука. Това са героите, които ще участват във формирането на CAPTCHA. Имам изброени могат да се добавят столица латински букви, като например номера.

Тя определя CAPTCHA дължина (6 символи).

Ширината и височината на генерираното изображение. Необходимо е, на първо място, изберете размера в зависимост от дизайна на сайта си, и второ, да се създаде оптимална ширина за определен период от капитан, че буквите не са били твърде плътно притиснати един към друг.

Тук можете укажете файла на шрифта. По принцип, той може да бъде поставен в поддиректория, например, шрифтове директория, след което съдържанието на променливата трябва да бъдат в следния формат: шрифтове / comic.ttf.

Тъй като променливи разгледани. На следващо място, се пристъпва директно към изпълнение. На първо място, трябва да укажете клиентът поиска скрипт, който съдържание отговор не представлява текст и изображение. За да направите това, замените съдържанието на HTTP-позиция тип на съдържанието:

Създаване на изображение с определен размер:

Expose необходимост флаг, освен алфа снимки:

Създаване на цветен фон. Това ще бъде напълно прозрачен цвят:

Попълнете тази цветно изображение, създадено от нашите:

Инициализиране променлива, която ще съдържа текст стойност на CAPTCHA:

По-нататък организиран цикъл с броя на повторенията, равни на КАПИТАН дължина (Caplen):

На всяка стъпка от цикъла се генерира след като символ на CAPTCHA и начертани върху изображението. Вземете случаен характер на нашата азбука и да го добавите към CAPTCHA:

Ние изчисляваме позицията на генерирания характер на изображението върху оста х:

Това положение зависи от ширината на номера на изображението, дължина Captcha и символ последователност. След това добавете малко "злополука" в тази ситуация:

Ние изчисляваме позицията на генерирания характер на изображението върху у ос:

Позицията зависи от размера на шрифта и височината на изображението.

Генериране на произволен цвят за символа. Този цвят не трябва да бъде прекалено светлина, така че всеки от компонентите на цвят (R, G и Б) за генериране на набор от 0-100:

За текущата символ на случаен принцип генерира своя ъгъл на наклона в диапазона -25..25 градуса до буквата показва в CAPTCHA "Танц":

И накрая, направи знак с всички по-горе характеристики, получени в картинката:

Тази линия завършва в тялото на цикъла. Когато цикълът е приключил, променлива капитан ще съдържа текст стойност за проверката мускулно и изображението ще бъде на подобен тест, са изготвени. Ние трябва някъде да се съхранява стойността на CAPTCHA до главния скрипт, който използва това може да се провери стойността на потребителите. Най-доброто място за това - променлива сесия. Инициализиране на сесията и съхранява CAPTCHA:

И накрая, на изхода на генерирано изображение CAPTCHA:

И освобождава памет, получени в рамките на снимката:

По-долу можете да видите демонстрация на получения CAPTCHA (опресняване на изображението):

Малко по-късно, мога да добавя готов скрипт капитан и един пример за използването му в HTML-форми.