Foros del Web » Programando para Internet » Javascript »

validar captcha

Estas en el tema de validar captcha en el foro de Javascript en Foros del Web. Hola necesito ayuda con un captcha que estoy haciendo Quiero validarlo en una funcion con java script pero no se como --Primero aqui genero un ...
  #1 (permalink)  
Antiguo 19/06/2008, 12:12
 
Fecha de Ingreso: junio-2008
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
validar captcha

Hola necesito ayuda con un captcha que estoy haciendo
Quiero validarlo en una funcion con java script pero no se como

--Primero aqui genero un numero aleatorio que se guarda en la variable $num
function validador()
{
var num = rand(1000,9999);
return num;
}

--Aqui es donde quiero validar la variable $num con el texto que ingreso en un formulario que les presento enseguida pero el problema que tengo es que no valida.

function checkcaptcha(whatYouTyped) {
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (txt.value == num) {
fieldset.className = "welldone";
}
else
fieldset.className = "";
}

---Aqui es donde escribo el valor del captcha y se valida con la funcion checkcaptcha

<fieldset>
<?php include ("includes/validador.php");
$n = validador();
echo "<input type='hidden' name='verifica' value='$n' />";?>
<strong> <?php echo $n ?> </strong>
<label for="captcha">Verificacion:</label>
<input type="text" id="captcha" size="4" maxlength="4"
onkeyup="checkcaptcha(this);" />
<span class="hint">Escribe los numeros en la caja de texto</span>
</fieldset>


Alguna ayuda como puedo validar lo que escribo con la variable $num no se si este correcto el if que pongo:
if (txt.value == $num)
AYUDA!

Última edición por betoo20; 20/06/2008 a las 12:22
  #2 (permalink)  
Antiguo 19/06/2008, 13:31
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: validar captcha

Hola:

Al parecer está todo bien (siempre que exista la función rand(), se genere el número antes de ser utilizado...). Pero prueba a pasar el valor de la caja de texto por un parseInt() para compararla con el número con un operador estricto (===), es sólo un formalismo.

Tienes que meter alerts, o contarnos qué error te da o qué ocurre, hasta donde llega tu script, qué no se ejecuta... diagnosticar un poco más.


PD: No sé si tiene sentido hacer un captcha con javascript. ¿No se supone que es para que una máquina no sea capaz de saber qué tiene que escribir? Si desactivamos javascript ¿qué ocurre? Javascript no ofrece ninguna seguridad en ese campo, lo único que logras es molestar al usuario (por lo menos, eso opino yo).


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 20/06/2008, 12:13
 
Fecha de Ingreso: junio-2008
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: validar captcha

Gracias por la respuesta entiendo que el captcha no es eficiente con javascript pero unicamente quiero validar el campo en javascript para que en el formulario devuelva automaticamente sin recargar la pagina si se escribio bien o no el numero, es un formulario en ajax, y ya cuando valide todos los campos y valide que se escribio correctamente me deje enviar el formulario para ser procesado con php espero me de a entender.

El problema que tengo es que estar escribiendo en el campo de verificacion me saca un mensaje que tengo que escribir el numero de verificacion y se supone que cuando termino de escribirlo si es correcto me pone una palomita verde que se escribio correctamente pero no sale. no se comparar los campos, pero si le pongo if (txt.lenght == 4) al escribir las cuatro numeros de captcha si funciona pero ahi slo estoy comparando que la longitud sea de 4 caracteres quiero comparar que el valor "num" que es el numero aleatorio lo compare con lo que se escribio.

Última edición por betoo20; 20/06/2008 a las 12:21
  #4 (permalink)  
Antiguo 21/06/2008, 04:29
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Respuesta: validar captcha

Bueno, como quieras. Pero te advierto que como ejercicio teórico o experimental te va a valer, en la práctica sería como intentar construir un muro a tu casa y dejarlo a medias: no sirve para nada.

Hay una cosa que me desconcierta un poco... ¿Qué es javascript y qué PHP? Entiendo validador() y checkcaptcha(whatYouTyped) como javascript, pero luego al llamarlas haces:
Código PHP:
<?php include ("includes/validador.php");
$n validador();
echo 
"<input type='hidden' name='verifica' value='$n' />";?>
Y eso es PHP...

¿Tienes funciones javascript y PHP que se llaman igual y hacen lo mismo? ¿O es que has confundido los dos lenguajes? Si vas a hacer PHP y javascript mi consejo es que desarrolles uno, y cuando esté listo y funcional empieces con el otro. Si vas con los dos a la vez puedes liarte.

Comprueba este ejemplo, había varios errores:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<
head>
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<
meta name="Author" content="derkeNuke" />
<
title>Página nueva</title>
<
style type="text/css">
.
welldone background-colorgreen; }
</
style>
</
head>

<
body>


<
script type="text/javascript">
<!--


// document.getElementById abreviado
function $(x) { return document.getElementById(x); }


function 
rand(a,b) {
    return 
Math.ceilMath.random()*Math.abs(b-a) )+Math.min(a,b);
}

// Primero aqui genero un numero aleatorio que se guarda en la variable $num
var num;        // debe ser global para que todas las funciones puedan trabajar con él
function validador() {
    
num rand(1000,9999);
    $(
"ponAquiElNumero").innerHTML num;
    return 
num;
}

// Aqui es donde quiero validar la variable $num con el texto que ingreso en un formulario que les presento enseguida pero el problema que tengo es que no valida.

function checkcaptcha(whatYouTyped) {
    var 
fieldset whatYouTyped.parentNode;
    var 
txt whatYouTyped.value;
    if (
txt == num) {
        
fieldset.className "welldone";
    }
    else
        
fieldset.className "";
}

window.onload validador;

// -->
</script>




---Aqui es donde escribo el valor del captcha y se valida con la funcion checkcaptcha

<fieldset>
<strong id="ponAquiElNumero"></strong>
<label for="captcha">Verificacion:</label>
<input type="text" id="captcha" size="4" maxlength="4"
onkeyup="checkcaptcha(this);" />
<span class="hint">Escribe los numeros en la caja de texto</span>
</fieldset>


</body>
</html> 
Ponías var txt = whatYouTyped.value y luego en la condicional txt.value (dos value); la variable num tiene que ser global... y todo lo que parecía PHP lo he transformado a javascript.


Espero que avances con este post.

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 22/06/2008, 22:28
 
Fecha de Ingreso: junio-2008
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: validar captcha

Hola gracias por la respuesta creo que tienes razon ya me hice bolas intentando mezclar los dos lenguajes estaba hacieno unos experimentos pero creo que asi no funciona mejor voy a desarrollar primero con php y ya cuando este al 100% meterle ajax. Aunque no me ha funcionado por lo menos he aprendido bastante.
Y Gracias por la ayuda. Saludos
  #6 (permalink)  
Antiguo 18/07/2009, 21:55
Avatar de jeepers  
Fecha de Ingreso: octubre-2008
Mensajes: 64
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: validar captcha

Una pregunta en este script no le falta una llave ( ya sea de cieere o de apertura porque no me anda solo anda si le agrego una llave pero otras funciones no me andan si le agrego la llave, cual podria ser el problema?

Cita:
<script type="text/javascript">
<!--


// document.getElementById abreviado
function $(x) { return document.getElementById(x); }


function rand(a,b) {
return Math.ceil( Math.random()*Math.abs(b-a) )+Math.min(a,b);
}

// Primero aqui genero un numero aleatorio que se guarda en la variable $num
var num; // debe ser global para que todas las funciones puedan trabajar con él
function validador() {
num = rand(1000,9999);
$("ponAquiElNumero").innerHTML = num;
return num;
}

// Aqui es donde quiero validar la variable $num con el texto que ingreso en un formulario que les presento enseguida pero el problema que tengo es que no valida.

function checkcaptcha(whatYouTyped) {
var fieldset = whatYouTyped.parentNode;
var txt = whatYouTyped.value;
if (txt == num) {
fieldset.className = "welldone";
}
else
fieldset.className = "";
}

window.onload = validador;

// -->
</script>
  #7 (permalink)  
Antiguo 19/07/2009, 02:50
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: validar captcha

El tema es de hace más de 1 año. Por favor, no reviváis temas tan antiguos.

Saludos,
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:41.