By submitting PHP Resources you own, or know of, you'll help us build the largest PHP Resource website on the net. Please double check that your resource doesn't already exist before you submit it!!. We thank you for helping make this a better website.
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.
session_start();
$ok = false;
$msg = 'Please enter the text in the image in the field below!';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['phrase']) && is_string($_POST['phrase']) && isset($_SESSION['phrase']) &&
strlen($_POST['phrase']) > 0 && strlen($_SESSION['phrase']) > 0 &&
$_POST['phrase'] == $_SESSION['phrase']) {
$msg = 'OK!';
$ok = true;
unset($_SESSION['phrase']);
} else {
$msg = 'Please try again!';
}
unlink(md5(session_id()) . '.png');
}
print "<p>$msg</p>";
if (!$ok) {
// create the CAPTCHA as seen above
// and send it to the client
}
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.