Foros del Web » Programando para Internet » PHP »

No puedo verificar captcha

Estas en el tema de No puedo verificar captcha en el foro de PHP en Foros del Web. 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 (); ...
  #1 (permalink)  
Antiguo 10/03/2009, 09:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 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.
  #2 (permalink)  
Antiguo 10/03/2009, 09:08
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 5 meses
Puntos: 220
Respuesta: No puedo verificar captcha

a ver trata de poner esta ultima linea en tu codigo de captcha
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);
session_write_close();//Cierra la Sesion y Guarda los Datos 
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 10/03/2009, 09:24
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: No puedo verificar captcha

Listo, solucionado.
El error estaba en el script de proceso de formulario.

El error estaba en esta linea:
Código PHP:
if(!$captcha!=$_SESSION['string']) 
tenia que escribir:
Código PHP:
if($captcha!=$_SESSION['string']) 
Estaba negando $captcha.

Disculpen las molestias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:50.