Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2009, 09:01
papucho666
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 0
No puedo verificar captcha

Hola, estoy haciendo un captcha y el problema llega al querer verificar lo introducido por el usuario.
Les pongo los codigos:
Código PHP:
session_start();
$img=imagecreate(300,200);
.....
......
$letras="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

$len_string=rand(3,7);

$string="";

for(
$i=0;$i<$len_string;$i++)
    
$string.=substr($letras,rand(0,61),1);

for(
$i=0;$i<strlen($string);$i++)
{
    
imagettftext($img,20,15*$inc,30*$i,50,$blanco,"FACERG.TTF",substr($string,$i,1));
    
    
$inc*=-1;
}

//variable que voy a usar en el script procesa_form.php
$_SESSION['string']=strtolower($string);

header("Content-Type: image/JPEG");
imagejpeg($img); 
Formulario para introducir el valos del captcha

Código HTML:
<form action="procesa_form.php" method="post">
	<h2 >Formulario con imagen</h2>

	Ingresa el codigo de seguridad:<input type="text" size="25" name="captcha"/>
	
	(No diferencia entre mayusculas y minusculas)
	
	<img id='cap' name='cap' src='imagen-primero.php'/>
	
         <?php  echo $_SESSION['string'];?>
	
	<br/>
	<a href="#" onClick="actucap();" >No veo bien la imagen</a>
	
	<br/>
	<input type="submit" value="Enviar"/>
	
</form> 
Script que procesa el formulario anterior

Código PHP:
session_start();

if(empty(
$_POST['captcha']) || !isset($_POST['captcha']))
{
    
header("location: form-captcha.htm");
    return;
}

$captcha=strtolower($_POST['captcha']);
    
if(!
$captcha!=$_SESSION['string'])
{
    
$_SESSION['mensaje']="Codigo de verificacion incorrecto";
    
header("location: form-captcha.php");
}
else
{
    
$_SESSION['mensaje']="<h3>Bien, lo lograste!</h3>"
                                
."<a hrerf=\"http://localhost/Imagenes_PHP/form_captcha/form-captcha.php\">"
                                
."Intentalo de nuevo"
                                
."</a>";
    
header("location: http://localhost/Imagenes_PHP/form_captcha/confirm.php");

El problema esta en que la variable $_SESSION['string'], que es donde almaceno el valor de la captcha, al momento de crear la imagen para despues comparala contra lo que escribe el usuario.
Esta variable me trae siempre un valor atrasado, por ejemplo si la captcha tiene "abc", la variable me muestra el valor que el captcha tenia antes.

Se entinede?
Espero me ayuden, gracias.