Как написать CAPTCHA на PHP

Приветствую Вас на страницах своего блога. В этом топике речь пойдёт о том как самому написать плагин CAPTCHA для своего сайта. Да, я знаю, что подобных скриптов в сети полным полно начиная от самых простеньких и заканчивая решениями мирового масштаба предоставляемые от гигантов индустрии, но всё же я не поленюсь поведать о том как написать капчу самому на PHP.

Как самому написать captcha?

Понятное дело, что написать свой скрипт капчи на PHP совсем не сложно и это не займёт много времени. Всё, что нужно это обеспечить отслеживание конкретного пользователя которому отдаётся картинка, а так же подключить какую-нибудь графическую библиотеку (вроде GB2) для создания картинок с случайным кривым текстом. Отслеживание легко сделать например через механизм сессий или же просто добавлять скрытое уникальное поле к отдаваемой форме. Т.е. генерируем случайный текст, создаём из него кривую картинку и даём ему уникальный id (в качестве id можно использовать и не только число, а например строку), далее в файл или базу данных заносим информацию о созданной картинке. На сервере (в файле, сессии или БД) запоминаем её id и правильный текст. В случае с сессией всё вообще просто, поэтому даже писать лень, поговорим о способах с использованием сторонних хранилищь, т.е. при использовании файла или БД. Просто отдаём форму пользователю и в ней так же будет скрытое поле с той самой id созданной картинки. После того как сервер получит форму обратно для обработки можно будет взять id картники и сверить его с првильным значением в базе или файле, вот и всё. Кстати такой метод используется в самой популярной капче reCAPTCHA. Пользователю отдаётся картинка и скрытое поле со уникальным идентификатором этой картинки, позже, на серверной строне, скрипт делает запрос на сервер reCAPTCHA отдавая параметр id картинки и оттуда получает ответ сходится ли введённое значение пользователя с настоящим текстом или нет.

Думаю основной алгоритм действий я весьма прозрачно описал и поэтому можно закругляться. Спасибо всем за внимание, надеюсь мне удалось пояснить основные принципы создания скрипта КАПЧА.