Foros del Web » Programando para Internet » PHP »

Problema con CAPTCHA

Estas en el tema de Problema con CAPTCHA en el foro de PHP en Foros del Web. Que no hay manera que me vaya el CAPTCHAaaaaaaaaaa Tengo lo que genera el captcha.php CAPTCHA.PHP Código PHP: <?php //Start the session so we can store what the code actually is. session_start (); //Now lets use md5 to generate a totally random string $md5  =  ...
  #1 (permalink)  
Antiguo 31/01/2008, 17:01
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Problema con CAPTCHA

Que no hay manera que me vaya el CAPTCHAaaaaaaaaaa

Tengo lo que genera el captcha.php

CAPTCHA.PHP

Código PHP:
<?php
//Start the session so we can store what the code actually is.
session_start();

//Now lets use md5 to generate a totally random string
$md5 md5(microtime() * mktime());

/*
We dont need a 32 character long string so we trim it down to 5
*/
$string substr($md5,0,5);

/*
Now for the GD stuff, for ease of use lets create
 the image from a background image.
*/

$captcha imagecreatefrompng("captcha.png");

/*
Lets set the colours, the colour $line is used to generate lines.
 Using a blue misty colours. The colour codes are in RGB
*/

$black imagecolorallocate($captcha000);
$line imagecolorallocate($captcha,233,239,239);

/*
Now to make it a little bit harder for any bots to break, 
assuming they can break it so far. Lets add some lines
in (static lines) to attempt to make the bots life a little harder
*/
imageline($captcha,0,0,39,29,$line);
imageline($captcha,40,0,64,29,$line);

/*
Now for the all important writing of the randomly generated string to the image.
*/
imagestring($captcha52010$string$black);

/*
Encrypt and store the key inside of a session
*/

$_SESSION['key'] = md5($string);

/*
Output the image
*/
header("Content-type: image/png");
imagepng($captcha);
?>
Si lo ejecuto me sale bien la imagen.
En teoria esto se guarda en una variable de sesion llamada $_SESSION['key'] no??

Luego tengo mi formulario. (No hace falta que tenga ningun "session start() verdad?)

FORMULARIO
Código HTML:
<form id="formulario" method="post" action="includes/validar.php">
	<label for="captcha">Codigo de seguridad: *</label>
	<img id="cap" name="cap" src="captcha.php">

	<label for="captcha">Repite el Código de seguridad:</label> 
	<input type="text" name="captcha_code" style="width: 150px;">

	<label for="send"></label>
	<input id="send" name="send" value="Registrarme!" type="submit" />
</form> 
Y entonces en mi script de validar.php

VALIDAR.PHP
Código PHP:
<?php
session_start
();
if (
$_SESSION['key'] != $_POST['captcha_code']) {
    echo 
"CODIGO ERRONEO";
}
else{
    echo 
"CODIGO CORRECTO";
}
?>
No encuentro porqué me dice que el codigo es erroneo!

Es normal que en la variable de $_SESSION['key'] se guarde un numero la tira de largoooooooo, no debería aparecer ahi el valor del captcha?

Ayuda pliss
  #2 (permalink)  
Antiguo 31/01/2008, 17:10
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: Problema con CAPTCHA

Hola:

Lo que pasa es que $_SESSION['key'] guarda el captcha generado pero encriptado con md5().

Entonces la comparación que debes hacer para la condición es:
Código PHP:
if ( $_SESSION['key'] != md5($_POST['captcha_code']) ) 
Saludos
  #3 (permalink)  
Antiguo 31/01/2008, 17:10
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con CAPTCHA

Cita:
Iniciado por neodani Ver Mensaje
Código PHP:
/*
Encrypt and store the key inside of a session
*/
 
$_SESSION['key'] = md5($string); 
Cita:
Iniciado por neodani Ver Mensaje
Es normal que en la variable de $_SESSION['key'] se guarde un numero la tira de largoooooooo, no debería aparecer ahi el valor del captcha?
Si lo encriptas usando md5() y así lo guardas en tu variable de sesión, entonces es absolutamente normal que no te guarde el valor tal y como es. Para hacer la comparación (entonces), debes encriptar también el valor que te llega del formulario:

Código PHP:
if ($_SESSION['key'] != md5($_POST['captcha_code'])) 
EDITO: Quién lo creería... triple choque de respuestas... Alguien más?

Un saludo,
  #4 (permalink)  
Antiguo 31/01/2008, 17:11
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: Problema con CAPTCHA

md5($string);

Código PHP:

session_start
();
if (
$_SESSION['key'] != md5($_POST['captcha_code'])) {
    echo 
"CODIGO ERRONEO";
}
else{
    echo 
"CODIGO CORRECTO";

  #5 (permalink)  
Antiguo 31/01/2008, 17:21
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Problema con CAPTCHA

Diosssssssss.... pues tenéis razón joer... xDD

He probado tantos captchas con tantas variaciones que ya no sabia lo que veia.

Gracias compis!

Por cierto, aprovecho el hilo y os pregunto si sabéis la forma de hacer el captcha como lo hace google... con las letras torcidas.
  #6 (permalink)  
Antiguo 31/01/2008, 17:24
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: Problema con CAPTCHA

eso se hace con fuentes. bájate la Clase de OKRAM de su web y la utilizas.
http://php.myokram.info/phpimagen/

debes usar las fuentes .ttf True Type Font
  #7 (permalink)  
Antiguo 31/01/2008, 17:27
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con CAPTCHA

Gracias nuevamente Eddwwin

@neodani, date una vuelta por http://www.php.net/imagettftext

Un saludo,
  #8 (permalink)  
Antiguo 31/01/2008, 17:31
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Re: Problema con CAPTCHA

Cita:
Iniciado por eddwinpaz Ver Mensaje
eso se hace con fuentes. bájate la Clase de OKRAM de su web y la utilizas.
http://php.myokram.info/phpimagen/

debes usar las fuentes .ttf True Type Font
Te refieres a esta? PHPImagen.lib.php

La he bajado, pero lo que no acabo de encontrar la fuente de google .ttf en la web :S
  #9 (permalink)  
Antiguo 31/01/2008, 17:41
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con CAPTCHA

Es que no es una fuente. Eddwwin se refería a que utilices una fuente cuya tipografía sea de estilo extraño. El efecto del captcha de Google u otras webs similares descnozco si es posible lograrlo con PHP, pero puedes sarle una miarada a http://www.captcha.net/, tal vez te interese.

Un saludo,
  #10 (permalink)  
Antiguo 31/01/2008, 19:00
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: Problema con CAPTCHA

Cita:
Iniciado por neodani Ver Mensaje
Te refieres a esta? PHPImagen.lib.php

La he bajado, pero lo que no acabo de encontrar la fuente de google .ttf en la web :S
Man tienes que buscar una fuetne similar... xD mira la clase y su documentación y a lo que respecta OKRAM.. eso son funciones de PHP correctamente .. que hacen el Blur o ese efecto de movido..
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 03:54.