Solved

PHP: how to make rapidshare type captcha

Posted on 2008-06-18
3
304 Views
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);
			$i++;
		}
		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');
		imagejpeg($image);
		imagedestroy($image);
		$_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

0
Comment
Question by:alicca
  • 2
3 Comments
 
LVL 4

Accepted Solution

by:
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.
0
 
LVL 2

Author Comment

by:alicca
ID: 21820752
i got the idea, but may try
0
 
LVL 2

Author Closing Comment

by:alicca
ID: 31468655
good
0

Featured Post

Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Extra security implementation for 2017 9 52
php simple error message 4 23
maybe no no httpd.conf 6 47
how to use 2 SELECT statements with prepared statements 19 30
This article outlines the process to identify and resolve account lockout in an Active Directory environment.
Data breaches are on the rise, and companies are preparing by boosting their cybersecurity budgets. According to the Cybersecurity Market Report (http://www.cybersecurityventures.com/cybersecurity-market-report), worldwide spending on cybersecurity …
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

777 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