PHP: how to make rapidshare type captcha

Posted on 2008-06-18
Last Modified: 2012-06-27
now captcha decoder is very strong and effective.

how to use Image GD to put some object to captcha like rapidshare (is that font or image?)
i mean the cat and dog

i have a captcha ready made. how to modify its code.

class CaptchaSecurityImages {

	var $font = 'monofont.ttf';

	function generateCode($characters) {

		/* list all possible characters, similar looking characters and vowels have been removed */

		$possible = '23456789bcdfghjkmnpqrstvwxyz';

		$code = '';

		$i = 0;

		while ($i < $characters) { 

			$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);



		return $code;


	function CaptchaSecurityImages($width='80',$height='24',$characters='6') {

		$code = $this->generateCode($characters);

		/* font size will be 75% of the image height */

		$font_size = $height * 0.75;

		$image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');

		/* set the colours */

		$background_color = imagecolorallocate($image, 255, 255, 255);

		$text_color = imagecolorallocate($image, 20, 40, 100);

		$noise_color = imagecolorallocate($image, 100, 120, 180);

		/* generate random dots in background */

		for( $i=0; $i<($width*$height)/3; $i++ ) {

			imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);


		/* generate random lines in background */

		/*for( $i=0; $i<($width*$height)/150; $i++ ) {

			imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);


		/* create textbox and add text */

		$textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');

		$x = ($width - $textbox[4])/2;

		$y = ($height - $textbox[5])/2;

		imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');

		/* output captcha image to browser */

		header('Content-Type: image/jpeg');



		$_SESSION['security_code'] = $code;



$width = isset($_GET['width']) ? $_GET['width'] : '80';

$height = isset($_GET['height']) ? $_GET['height'] : '24';

$characters = isset($_GET['characters']) && $_GET['characters'] > 1 ? $_GET['characters'] : '6';

$captcha = new CaptchaSecurityImages($width,$height,$characters);

Open in new window

Question by:alicca
  • 2

Accepted Solution

afzz earned 500 total points
ID: 21820719
Rapidshare captcha is a font. You can/may achieve this
by doing the follwing:

1. If your captcha has 4 chars, put them in an array
2. create another array of 4 chars randomly
3.  print both the arrays in a random order one with a cat font and one with a dog font. The cat font can be the actual captcha.

Sorry, i could not see your code now. Maybe someone else can suggest how you could alter it to achieve the above.

Author Comment

ID: 21820752
i got the idea, but may try

Author Closing Comment

ID: 31468655

Featured Post

New! My Passport Wireless Pro Wi-Fi Mobile Storage

Portable wireless storage to offload, edit, and stream anywhere.

High-capacity, wireless mobile storage designed to accompany professional photographers and videographers in the field to easily offload, edit and stream captured photos and high-definition videos.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains in simple steps how to renew expiring Exchange Server Internal Transport Certificate.
Encryption for Business Encryption ( ensures the safety of our data when sending emails. In most cases, to read an encrypted email you must enter a secret key that will enable you to decrypt the email. T…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
A simple description of email encryption using a secure portal service. This is one of the choices offered by The Email Laundry for email encryption. The other choices are pdf encryption which creates an encrypted pdf of your email and any attachmen…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now