PDA

View Full Version : Captcha Variables


gloradin
02-20-2008, 05:51 PM
I am following tutorial of a "captcha," and can now be seen in "http://fotos.gloradin.com/details/aldeia.da.luz/tinta.de.cal.imagem.php?gid=128&sgid=&pid=1530&gal="

The image of the "captcha" has the following code:
--------------------------------------------------------
<?php
//Start the session so we can store what the security code actually is
session_start();

//Send a generated image to the browser
create_image();
exit();

function create_image()
{
//Let's generate a totally random string using md5
$md5_hash = md5(rand(0,999));
//We don't need a 32 character long string so we trim it down to 5
$security_code = substr($md5_hash, 15, 5);

//Set the session to store the security code
$_SESSION["security_code"] = $security_code;

//Set the image width and height
$width = 50;
$height = 20;

//Create the image resource
$image = ImageCreate($width, $height);

//We are making three colors, white, black and gray
$white = ImageColorAllocate($image, 102, 102, 102);
$black = ImageColorAllocate($image, 255, 255, 255);
$grey = ImageColorAllocate($image, 187, 179, 230);

//Make the background black
ImageFill($image, 0, 0, $black);

//Add randomly generated string in white to the image
//controla a posição do conjunto das letras 1 mede tamanho 2 mede posição vertical 3 posicao horizontal
ImageString($image, 3, 1, 3, $security_code, $white);

//Throw in some lines to make it a little bit harder for any bots to break
//ImageRectangle($image,0,0,$width-1,$height-1,$grey);
//imageline($image, 0, $height/2, $width, $height/2, $grey);
//imageline($image, $width/2, 0, $width/2, $height, $grey);

//Tell the browser what kind of file is come in
header("Content-Type: image/jpeg");

//Output the newly created image in jpeg format
ImageJpeg($image);

//Free up resources
ImageDestroy($image);
}
?>
---------------------------------------------------------------

I need to know how to send or call the variables that made the picture. To understand this system and to develop, I need to know how to capture the variables of "captcha" to be able to compare to see if the client has the right words.
In the file shows the system "captcha", if I want to show to experience, as I do.
(like: <? echo $security_code; ?> )

Somebody help me plese.

The best regards,
gloradin

felgall
02-20-2008, 06:13 PM
Assuming that the field they enter the security code in has a name of securitycode

<?php
session_start();

if ($_POST['securitycode'] != $_SESSION['security_code']) {
// processing for when security code doesn't match goes here
}


$_SESSION['security_code'] is being passed from the image with the same value as is displayed in the image.

gloradin
02-22-2008, 06:46 AM
When I write this request for assistance, was to see how this captcha worked, I thank you for your answer, and that solved the problem, thanks.
But also write to try to learn how to operate the variables in the system image (library gd).
The only way to obtain the variables of the image is through sessions?
If I create a normal variable as $var = 1;.
How can get a $var variable without sessions?
Thank you to help me, I starting my knowledge in gd.
Thank you for your attention.
the best regards
gloradin

felgall
02-22-2008, 10:07 AM
You can't pass the value into the validation script without using a session.

See http://au2.php.net/manual/en/ref.image.php for the manual on how the GD library works.

gloradin
02-22-2008, 05:05 PM
Hello,
I try to show the variable of captcha image, and finnaly I see the variable. I show the variable with this code:
<?
session_start();
echo $_SESSION['security_code'];
?>

Now I can see the variable, but I see this warning in the browser:
Cannot send session cache limiter - headers already sent (output started at /home/gloradin/public_html/fotos/comentarios_final.php:9) in /home/gloradin/public_html/fotos/comentarios_final.php on line 10

I have to edit something in my php.ini, or something.
My code is wrong or my account have bad configurations.

Can you help me please.
The best regards,
gloradin

felgall
02-22-2008, 05:24 PM
The code needs to come before anything at all including blanks is actually output to the web page. The most likely cause is trailing spaces in an include file that precedes that code. Try moving that code to the very top of the script.

gloradin
02-22-2008, 05:31 PM
Hello again,
thats good now, very thanks felgall.
Somebody tell me if in php have some code for automatic redirecly for another page. I made this awsner because if my costumer put a wrong security code, I want they go again to the preview page.
The best regards,
gloradin

gloradin
02-22-2008, 07:19 PM
I discovery this way:
<meta http-equiv="refresh" content="0;url=http://www.mysite.com/">

thanks,
gloradin

felgall
02-23-2008, 12:06 AM
Browsers can turn off that meta tag. The better way to do it is using PHP:

header("location: http://www.mysite.com/");

The meta tag just attempts to set the header from within the HTML rather than doing it properly before the page starts to load.