[c#] Captcha

75 views
Skip to first unread message

Cristian Maidana

unread,
Nov 25, 2009, 10:17:21 AM11/25/09
to Dario Quintana
Hola a todos, me gustaría saber si alguien ha integrado una imagen
captcha en un formulario aspx y ha podido validar
esa imagen con jquery.

he visto que se puede genera_y cargar una imagen dese un archivo ashx,
pero no puedo acertar la forma de validarlo con jquery y que
en caso de que la validacion sea incorrecta, me vuelva a recargar
solamente la imagen (sin recargar la pagina).

Desde ya muchas gracias

Cristian.-

Leonardo Micheloni

unread,
Nov 25, 2009, 10:39:02 AM11/25/09
to Dario Quintana
Hola Cristian,
Evidentemente si querés que la imagen se recarge sin recargar la
páginas vas a tener que utilizar ajax para validar del lado del
servidor y en todo caso regenerar la imagen...


2009/11/25 Cristian Maidana <cristia...@gmail.com>:

Angel Lubenov

unread,
Nov 25, 2009, 10:59:43 AM11/25/09
to Dario Quintana
Efectivamente vas a tener que usar ajax si no querés recargar la página completa.
No se que versión de asp.net estarás usando, pero hay una librería open source para .net que te permite "ajaxisar" ;-) cualquier método de .net e invocarlo via jscript desde la página, incluso hasta soporta la tipificación .net.... no recuerdo la página para descargártela pero cuando vuelva del trabajo si querés te la paso.

También podés hacerlo vos a mano con jscript y el objeto xmlhttprequest, es muy fácil, también si querés puedo pasarte ejemplos.

Si tenés atlas o algún fwk ajax ya tendrías todo eso solucionado :-P

Saludos!
Angel Fernando Lubenov

Algunas veces me considero un pescador. Los programas de ordenador    
y las ideas son mis herramientas, cañas y redes. Los gráficos que aparecen    
en mi pantalla son trofeos y deliciosas mieles.  
Clifford A. Pickover,  
Computers, Pattern, Chaos and Beauty
--------------
Si vi mas allá del horizonte, fue porque me paré sobre hombros de gigantes
Isaac Newton


2009/11/25 Leonardo Micheloni <leonardogabr...@gmail.com>

jan...@gmail.com

unread,
Nov 25, 2009, 11:01:06 AM11/25/09
to Dario Quintana
Hola,
Tendrias que hacer un request al servidor para validar el codigo, si esa validacion falla, y por lo tanto tenes que actualizar la imagen vas a tener que hacer algo como:

xyz.innerHTML = "<img src='captcha.ashx?c=" + escape(new Date()) + "' />";

o algo asi, lo importante seria cambiar el src de la imagen por algo dinamico para evitar caches y que de cualquier forma siga siendo capturado por el handler

Saludos!

Cristian Maidana

unread,
Nov 25, 2009, 12:45:26 PM11/25/09
to Dario Quintana
Muchisimas gracias a todos por la rta.

Angel me interesaria mucho saber el nombre de esa libreria y si tenes
ejemplos, serán bienvenidos!,

estoy utilizando la vesoin 2 del Framework.

saludos!

Cristian.-

El día 25 de noviembre de 2009 12:59, Angel Lubenov
<angelf...@gmail.com> escribió:

Angel Lubenov

unread,
Nov 25, 2009, 1:56:44 PM11/25/09
to Dario Quintana
Cristian, aquí la encontré

http://www.ajaxpro.info/

Funciona para el fwk 1.1 y el 2, y realmente a mi me resultó super simple de usar.
En la página tenés un ejemplo de cómo se usa (http://www.ajaxpro.info/quickguide.aspx) , pero te lo resumo acá
0.- bajas el assembly y lo dejás en la carpeta "bin" de tu aplicación (o lo referencias desde VStudio)
1.- registras la clase en el web.config como un httpmodule (en el link te muestra)
2.- le agregás el atributo [ajaxpro.ajaxmethod] arriba de cada método que quieras que sea un método ajax
3.- desde jscript en el html, simplemente escribis el nombre completo del método para invocarlo "namespace.nombredelaclase.nomredelmetodo" y listo!!!!


En tu caso, supongo que deberías hacer lo siguiente.

Create un método en c# que tenga como parámetros los datos necesarios para validar si lo que escribió el usuario se corresponde con el capcha.
Agregale el atributo para que sea un método ajax.
Hacé (es una idea nada más) que si la validación es exitosa, el método retorne "ok" y sinó la url de la nueva imágen capcha.

En el botón o link que el usuario apretaría para validar el captcha, agregale un atributo "onclick" con la siguiente invocación "return validacapcha(parametros);"

"validacapcha" sería un método javascript que haría lo siguiente:
1.- valida que se haya ingresado algo en el input de captha
2.- invoca al método ajax para validar capcha
3.- si el método retornó OK, entonces retornamos true, esto permitirá que el botón siga su "curso normal" que asp.net le da en el momento del render de la página
4.- si el método retornó una url de una nueva imagen capcha porque la validación no fue correcta entonces
4.1.- buscamos la imagen en el documento "document.getElementById('nombre del tag deimagen').src='<nueva url de imagen retornada>'"
4.2.- avisamos al usuario que la validación fue incorrecta
5.- retornamos "false" (esto hará que no se ejecute el "submit" del botón que asp.net le agrega en tiempo de render)"

y listo!
A groso modo, tenés un capcha que se valida y se actualiza sin refrescar la página completa y lo mejor de todo .... con unos cambios mínimos en lo que ya tengas hecho!!

Espero te haya servido!
Si querés un ejemplo más concreto, cuando llego a mi casa te fabrico uno y te lo mando.


Saludos!
Angel Fernando Lubenov

Algunas veces me considero un pescador. Los programas de ordenador    
y las ideas son mis herramientas, cañas y redes. Los gráficos que aparecen    
en mi pantalla son trofeos y deliciosas mieles.  
Clifford A. Pickover,  
Computers, Pattern, Chaos and Beauty
--------------
Si vi mas allá del horizonte, fue porque me paré sobre hombros de gigantes
Isaac Newton


2009/11/25 Cristian Maidana <cristia...@gmail.com>

Cristian Maidana

unread,
Nov 25, 2009, 2:10:08 PM11/25/09
to Dario Quintana
Angel, muchisimas gracias por la "clase", esta noche voy a comenzar a
verlo para implementarlo, ya que veo que sierve para
muchas de las situaciones con las que me estoy encontrando diariamente.

saludos!

Cristian.-

El día 25 de noviembre de 2009 15:56, Angel Lubenov
<angelf...@gmail.com> escribió:

Reply all
Reply to author
Forward
0 new messages