Foros del Web » Programando para Internet » PHP »

Captcha

Estas en el tema de Captcha en el foro de PHP en Foros del Web. Hola... Quiero crear un sistema de captcha (sin imágenes) porque mi web está siendo invadida de spam Lo quiero hacer así: -guardar en mysql tres ...
  #1 (permalink)  
Antiguo 21/01/2009, 16:07
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Captcha

Hola...

Quiero crear un sistema de captcha (sin imágenes) porque mi web está siendo invadida de spam

Lo quiero hacer así:

-guardar en mysql tres datos (id,pregunta y respuesta).

Ejemplo:

pregunta: $-U-#-N-O-$

respuesta: 1

Ahora así del uno al diez y sacar uno aleatorio, luego comprobar...

-Aunque quiero saber si es un captcha seguro, porque nunca lo he visto, y es lo primero que se me vino a la cabeza.

Saludos!
  #2 (permalink)  
Antiguo 21/01/2009, 16:11
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Captcha

Leete esto:
http://www.sitepoint.com/article/cap...-alternatives/
Pagina 2: Logical or Semantic Puzzles

Sacar el resultado aleatorio de una base de datos es facil.
SELECT * FROM tabla ORDER BY RAND() LIMIT 1;
  #3 (permalink)  
Antiguo 21/01/2009, 16:23
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Captcha

Gracias

...Pero y si se escribiera con faltas de ortografía, mayusc, minsuc, etc...

Gracias también por el rand().

-Entonces mi idea ¿es segura o débil?

Saludos!!
  #4 (permalink)  
Antiguo 21/01/2009, 16:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Captcha

Es más débil debido a que es más fácil crear un analizador léxico de una cadena de texto, cuando es con una imágen es complicado debido a que hay que decodificar primero la imagen.

Saludos
  #5 (permalink)  
Antiguo 21/01/2009, 16:30
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Captcha

Hola!!

Y si uso las de preguntas lógicas, como ¿el hielo está frío o caliente?...

Para que me pase todas las posibilidades a frio, es decir:

Convierta Frío > frio
Convierta fRio> frio
Convierta friO> frio
Convierta frió > frio
Convierta fRíó > frio
Convierta FRio > frio

¿Serviría eso no?

¿Pero cómo quito tildes?, lo de pasar a minúsculas es strtolower($texto)...

Saludos y gracias

EDITO: (he creado una función)

Código PHP:
//Datos para la pregunta
$captcha=mysql_query("SELECT * FROM `captcha` ORDER BY RAND() LIMIT 0,1");
$captcha=mysql_fetch_assoc($captcha);
$capid=$captcha['id'];
$capquest=$captcha['question'];
$capanswer=$captcha['answer'];

$cap_id=$_POST['captchaid']; //¿Envío de formulario?

if(!isset($cap_id)){
echo 
"<br />Contesta a la pregunta: ¿" $capquest "?&nbsp;<input type='text' name='answer' maxlength='2' size='10' /><input type='hidden' name='captchaid' value='" $capid "' /><br />";
}else{
$answer=$_POST['answer'];

$s=$answer;
$s ereg_replace(&#8221;[áàâãª]”,”a”,$s);
$s ereg_replace(&#8221;[ÁÀÂÃ]”,”A”,$s);
$s ereg_replace(&#8221;[ÍÌÎ]”,”I”,$s);
$s ereg_replace(&#8221;[íìî]”,”i”,$s);
$s ereg_replace(&#8221;[éèê]”,”e”,$s);
$s ereg_replace(&#8221;[ÉÈÊ]”,”E”,$s);
$s ereg_replace(&#8221;[óòôõº]”,”o”,$s);
$s ereg_replace(&#8221;[ÓÒÔÕ]”,”O”,$s);
$s ereg_replace(&#8221;[úùû]”,”u”,$s);
$s ereg_replace(&#8221;[ÚÙÛ]”,”U”,$s);

if($capanswer==$answer){
$captchapass=true;
}else{
$captchapass=false;
}

¿Me sirve?

Última edición por yonolose; 21/01/2009 a las 16:43 Razón: Modificación
  #6 (permalink)  
Antiguo 21/01/2009, 16:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Captcha

Pues de servir sirve, aplica también trim() a la variable para quitar posibles espacios en blanco.

Saludos
  #7 (permalink)  
Antiguo 21/01/2009, 21:52
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Captcha

Cita:
Para que me pase todas las posibilidades a frio, es decir:

Convierta Frío > frio
Yo haria un trim(), luego strtolower(), despues strtr() para las mayusculas. Y ya esta.
  #8 (permalink)  
Antiguo 22/01/2009, 08:57
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
De acuerdo Respuesta: Captcha

De acuerdo... Gracias por vuestra ayuda!!!


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 18:13.