
Сегодня будем рисовать каптчу. Причем не с помощью стандартных библиотек вывода графики (таких мануалов в сети более чем достаточно), а каптчу, отображаемую пользователю в виде псевдографики, т.е. изображения символов каптчи будут созданы из обычных числовых и буквенных символов. Для упрощения задачи примем следующее:
— В качестве символов, из которых будет создаваться изображение, будем использовать латинские буквы, цифры и знаки препинания. Можно, конечно, и китайскими иероглифами пользоваться, но не факт что пользователь сможет каптчу распознать и она у него не «поплывет».
— Сам код каптчи будет состоять только из цифр (ну вот лень мне было заморачиваться с буквами в ASCII-арт).
Плюсы:
+ Скрипт легко встраивается как медведевский будильник, в разные места в любое место, где нужна каптча.
+ Не требует библиотек обработки изображений, дополнительных ранее нарисованных картинок и т.д., соответственно, будет работать даже на самом плохом хостинге, где библиотек типа ImageMagick может вообще не быть
+ Отображается даже в консольном (текстовом) редакторе типа lynx.
+ Почти не тратит трафик (текст же) и ресурсы сервера.
Минусы:
— Довольно легко ее распарсить автоматически, если не применять всякие дополнительные фишки, типа изменения количества строк и столбцов изображения. Их, к сожалению, в этом мануале не будет, но если кто-нибудь захочет вдруг, то я вернусь к этому вопросу.
В части первой займемся рисованием цифр. Конечно, человеку увлекающемуся ASCII-артом это нафиг не надо, можно сразу пропускать и переходить ко второй части. Кто не знает, что такое ASCII-арт вообще, тот может сходить в Википедию или Гугль, и ознакомиться с темой.
Я сам не великий ASCII-сенсей, так что использовал достаточно стандартную методу:
1. В любом простом текстовом редакторе (Блокноте, Notepad++, mcedit или редакторе FAR-а) нарисуем поле размером в X символов и Y строк каким-либо одним символом, например *, -, # или любым другим. Должно получиться что-то типа этого (я взял поле размером 6 x 5 символов):
------
------
------
------
------
2. Далее, нажимаем клавишу Insert, включаем режим замены и заменяем в этом поле символы - на какие-нибудь другие, так, чтобы получилось изображение определенной цифры, например:
-0000-
00--00
00--00
00--00
-0000-
Если кто-то ленивый, то можно поискать готовые цифры в Гугле, взять несколько черновой вариант здесь, готовый, используемый мною вариант здесь. Или можно вообще в последней части статьи скачать сразу весь архив. XD
Итак, у нас есть готовые изображения цифр, осталось лишь записать их в виде, доступном PHP.
Создаем массивы, содержащие псевдографические изображения цифр. Здесь и далее условимся, что в качестве «пустого» символа я использовал *, а в качестве символа для изображения цифры, знак $.
Код и некоторые пояснения
В следующей части создадим генератор кода каптчи и генератор ее ASCII-изображения.












![[info]](https://tolik-punkoff.com/wp-content/plugins/lj-ljr-users/img/userinfo-ljr.gif)