24 Mar 2012

Einfache Captcha-Generation im PHP

Simple Captcha-Generation in PHP. Use at your own risk!

<?php
session_start();

$alphanum = 'abcdefghjkmnpqrstuvwxyz0123456789';
$code = substr( str_shuffle( $alphanum ), 0, 5 );

$_SESSION['captcha'] = md5( $code );

$image = imagecreatetruecolor(80,40);
$bgCol = imagecolorallocate ( $image, 255, 255, 255 );
imagefill ( $image, 0, 0, $bgCol);

$x=10;$y=10;
for ($i=0;$i<5;$i++) {
	$r=rand(0,1);$b=rand(0,1);$g=rand(0,1);
	// only red, green, blue, black 
	// todo: generate nicer colors
	if ($r==1) {$b=0;$g=0;}
	if ($g==1) {$b=0;}
	$txtCol = imagecolorallocate ( $image, $r*200, $g*200, $b*200 );
	imagestring ( $image, 5, $x, $y+rand(-3,3), substr($code,$i,1), $txtCol );
	$x+=12;
}

header( 'Expires: Mon, 12 Jul 1999 01:01:00 GMT' );
header( 'Last-Modified: ' . gmdate( "D, d M Y H:i:s" ) . ' GMT' );
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' );
header( 'Content-type: image/jpeg' );
imagejpeg( $image );
imagedestroy( $image );
?>