Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2011, 12:36
elena_22
 
Fecha de Ingreso: junio-2010
Mensajes: 117
Antigüedad: 14 años, 8 meses
Puntos: 1
captcha no coincide con la variable de sesion

Hola estoy implementando un captcha, y tengo un problema, que en realidad no se si es problema o solo es un ajuste el que hay que hacer.
Cuando genero mi imagen captcha, guardo el código a escribir en la imagen en una sesión, para que al enviar el formulario pueda comparar lo que escribió el usuario con la sesión y si son iguales enviar el formulario, pero cuando comparo estos dos, nunca concuerdan, me he dado cuenta que el código que se escribe en la imagen no es el mismo que se guarda en la sesión, a pesar de guardar y escribir el código al mismo tiempo, y cada vez que actualizo el formulario lo que queda guardado en la sesión es el código que se escribió en la imagen anterior.
Les muestro el código que uso:

captcha.php

Código PHP:
<?php
session_start
();
$width  35;
$height 150;
function 
getCode($length){
    
$code 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
    
$codigo '';
    
$i 0;
    while (
$i $length) {
        
$codigo .= substr($codemt_rand(0strlen($code)-1), 1);
        
$i++;
    }
    return 
$codigo;
}

$_SESSION['captcha'] = getCode(6);

$image imagecreatetruecolor($height$width);
$width imagesx($image); 
$height imagesy($image);
$black imagecolorallocate($image000); 
$white imagecolorallocate($image255255255); 
$red imagecolorallocatealpha($image2550075); 
$green imagecolorallocatealpha($image0255075); 
$blue imagecolorallocatealpha($image0025575); 
imagefilledrectangle($image00$width$height$white); 
imagefilledellipse($imageceil(rand(5145)), ceil(rand(035)), 3030$red); 
imagefilledellipse($imageceil(rand(5145)), ceil(rand(035)), 3030$green); 
imagefilledellipse($imageceil(rand(5145)), ceil(rand(035)), 3030$blue); 
imagefilledrectangle($image00$width0$black); 
imagefilledrectangle($image$width 10$width 1$height 1$black); 
imagefilledrectangle($image000$height 1$black); 
imagefilledrectangle($image0$height 1$width$height 1$black); 
imagestring($image10intval(($width - (strlen($_SESSION['captcha']) * 9)) / 2),  intval(($height 15) / 2), $_SESSION['captcha'], $black);
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>
en el formulario

Código PHP:
<b>Introduzca el c&oacute;digo en el cuadro de abajo:</b><br />
                                <input type="text" name="captcha" value="" />
                                <br />
                                <img src="captcha.php" id="captcha" />
                                <? echo $_SESSION['captcha'];?>

muchas gracias por sus respuestas, saludos