Home
Blog
Contact
Mailing List
Software
Blog
Twitter
|
<< Back To All Blogs
A PHP Captcha Class
Tuesday, April 8th, 2008
A captcha is a very useful component to add to your blog to prevent SPAM bots from posting un-wanted garbage on your blog, or any other user-submitted form on your website.
I created a very simple Captcha class that can be used to create this image, the usage is posted below:
class Captcha {
var $session;
var $text;
var $width = 120;
var $height = 30;
function Captcha($session = "", $text = "", $width = 120, $height = 30) {
$this->session = $session;
if (empty($this->session)) {
$this->session = "captcha";
}
$this->text = $text;
if (empty($this->text)) {
$this->text = $this->getRandomText();
}
$this->width = $width;
$this->height = $height;
}
function getCaptcha() {
$_SESSION[$this->session] = $this->text;
$image = ImageCreate($this->width, $this->height);
$white = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
$grey = ImageColorAllocate($image, 204, 204, 204);
ImageFill($image, 0, 0, $black);
ImageRectangle($image,0,0,$this->width-1,$this->height-1,$grey);
imageline($image, 0, $this->height/3, $this->width, $this->height/3, $grey);
imageline($image, $this->width/3, 0, $this->width/3, $this->height, $grey);
ImageString($image, 4, 30, 3, $this->text, $white);
header("Content-Type: image/jpeg");
ImageJpeg($image);
ImageDestroy($image);
exit();
}
function getRandomText() {
$toReturn = "";
for ($a=0; $a<8; $a++) {
$rand = rand(97,122);
$toReturn .= chr($rand);
}
return($toReturn);
}
}
To use the captcha class to as follows:
Create a page called captcha.php, and on that page simply put the following:
$captcha = new Captcha();
$captcha->getCaptcha();
This will return a captcha image and set the session to the random text that is generated.
You can then reference this image as follows:
<img src="captcha.php">
Hopefully you'll enjoy the class, code away PHPers, code away...
Tom out.
Comments
Currently no comments.
Add A Comment
Name:
URL:
Email Address: (not public, used to send notifications on further comments)
Comments:

Enter the text above, except for the 1st and last character:
|