Veriword is a PHP Captcha system thats generate a question in form of an image with random baffle text or in another form such as an animated flash. The class is capable of picking a random word, generate captcha and store the word in an encrypted session variable for posterior validation eventually in a form on which it is used to prevent robots to have automated access.
Current features of VeriWord are:
A. Generation and rendering of Captcha images (as JPEG/PNG/GIF/WBMP) or flash (as SWF) at runtime for inclusion in an existing entry form. VeriWord use captcha engine (see class.captcha.php) which uses three other classes to compose captcha. These classes are:
1. WordGenerator (class.wordgenerator.php) generates random word from dictionary file or create spelled random word. Three type of random word are:
> DictionaryWord, pick a random word from dictionary.
> SemiDictionaryWord, pick a random word from dictionary then plus with random suffix.
> RandomWord, pick a nonsence word by composing consonants and vowels, so the word can be spelled by human.
2. WordArt (class.wordart.php) creates distorted word with random TrueType fonts from font directory. This class calls Filter to create baffle text of the word. Check existing filter on class.filter.php, you may add your filter to make your captcha is unique than others. Two type of WordArt are:
> Linear, write a word in linear manner.
> NonLinear, write a word in various size, angle, vertical position for each characters.
Some existing filters are:
> Wavy, distort a word image by waving object using sin or cos functions.
> Bubbly, disturb a word image by filling object with tens of bubbles.
> BreakType, distort a word image by reducing pixels.
3. NoiseGenerator (class.noisegenerator.php) picks a random background from noise directory or create one on the fly. These types are:
> BackgroundNoise, pick a noise image from noises directory. The image format can be JPEG or GIF with dimension about 100 x 50 pixles.
> RandomNoise, create a noise image on the fly by drawing lines in a range of angles. You may add or change the way of noise creation, for example grid background or gradient color background.
o Expecially for FlashCaptcha (class.flashcaptcha.php), this flash is created using Ming module (make sure you use the latest version), the captchaing is done by disturbing the word with animated bars and bubbles, the human still able to read the word but robot can't.
B. Configuration made in veriword.ini file that parsed by ConfigReader (class.configreader.php), this parsing done in VeriWord creation.
C. Store random word in md5 encrypted session variable.
D. Verify the posted word using VeriFicator class. At the present, this class only has one job, that is verifying the word. Next time, I want to add the capability by extending more functionalities, such as monitoring, tracking or banding.