Implementation of CAPTCHAs (Completely Automated Public Turing tests to tell Computers and Humans Apart).
This package provides the functionality to create CAPTCHAs (Completely Automated Public Turing tests to tell Computers and Humans Apart). Features include:
Creating graphical CAPTCHAs using GD2
Pluggable driver architecture using factory pattern
The package creates CAPTCHAs; due to the stateless nature of the HTTP protocol, the logic to secure a webpage using the package must be specifically implemented. See the usage example for detailled information.
Currently, the graphical CAPTCHA driver depends on Image_Text which in turn requires TTF support to be compiled into PHP.
The following example implements the standard use of a CAPTCHA: Submitted form data is only evaluated when a CAPTCHA has been solved correctly.
Example 64-1. Creating a CAPTCHA
The following code creates a CAPTCHA, provides the relevant information for the package, anhd retrieves the CAPTCHA as a PNG image.
Example 64-2. Securing a form with a CAPTCHA
The following code implements the functionality to check whether a CAPTCHA was solved correctly or not. for this, the CAPTCHA's phrase is stored in a session variable to retain this information between requests. It is important to unset the session after solving the CAPTCHA to avoid the reuse of the session ID.
See the file CAPTCHA_test.php in the package distribution for a full, working example (GD and TTF support required).
Text_CAPTCHA provides information about the CAPTCHA and makes its inner workings accessible using several functions defined in the base class; the specific implementation of them is up to the driver.
init() is used to initialize the CAPTCHA and provide further information, like Image_Text parameters.
_createCAPTCHA() generates the CAPTCHA, but is called internally by init().
getPhrase() returns the CAPTCHA's phrase.
_createPhrase() creates a phrase for the CAPTCHA, but is used internally.
getCAPTCHA() returns the CAPTCHA, the format used depends on the driver implementation.