Foros de daboweb

MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: Rododendro en 22 de Marzo de 2007, 12:42:10 pm

Título: Desactivar u ocultar formularios
Publicado por: Rododendro en 22 de Marzo de 2007, 12:42:10 pm
Hola, tengo la siguiente pregunta: ¿cómo se puede hacer que un formulario quede desactivado u oculto después de que el usuario haya enviado sus datos?  :???:

   
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 22 de Marzo de 2007, 03:23:41 pm
De la manera que preguntas falta información, ¿qué clase de formulario es? ¿Un logueo? Si es un logueo se controla mediante cookies, habrá abierto una sesión y mediante esa sesión (ese tipo de sesiones se controlan mejor desde la BD) se controla qué ha de visualizar o no.

No sé si te he aclado algo, pero tampoco sé exactamente a qué te refieres.

Saluetes.
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 22 de Marzo de 2007, 06:45:31 pm
Me refiero al formulario típico de toda la vida, ya sea de una sola línea de texto o de textarea, y desde el cual el usuario envía datos -nombre y apellidos, una opinión o lo que fuere-. Creo que tanto para evitar un uso repetido e indiscriminado del formulario como por conferirle un toque dinámico es una buena idea diseñarlo de tal modo que, una vez efectuado el envío de datos -corroborado por un mensaje a tal efecto-, quede oculto o desactivado. A grandes rasgos sé que para esto hay más de una vía posible: usar JavaScript para que el botón de envío y/o el campo de texto queden inutilizados mediante la posibilidad "disabled" ejecutada con un evento onSubmit, ubicar el formulario en una ventana que tras el envío y el mensaje de confirmación se cierra, etc. Lo que pasa es que me hago una idea sólo aproximada y no exacta del código preciso para aplicar alguna de esas soluciones, de ahí mi pregunta inicial. Supongo que en cualquier caso el remedio pasa necesariamente por JavaScript, aunque si alguien conoce otro método distinto y más fiable -a fin de cuentas el internauta puede deshabilitar el JavaScript-, me gustaría saberlo.
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 22 de Marzo de 2007, 06:49:25 pm
Si la página es dinámica puedes controlar quien ha usado ya el formulario mediante una cookie y al examinar la cookie decidir si quieres que escupa o no de nuevo el formulario. Yo tiraría antes por ahí que por JS. Con JS yo antes que deshabilitar botones tiraría de DOM.

Saluetes. :-d
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 22 de Marzo de 2007, 07:09:56 pm
Soy principiante en todos estos asuntos, y el tema de los cookies me es casi desconocido. No obstante, y dado que lo mencionas, ¿es posible aplicar con las cookies un sistema automático para conseguir que el formulario, una vez utilizado, no pueda ser reutilizado por el usuario, ocultándolo después de su uso? Con "automático" me refiero a que funcione de continuo sin necesidad de controlar quién usa el formulario. Lo que no he entendido es a qué te refieres exactamente con "tirar de DOM".   
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 22 de Marzo de 2007, 07:24:05 pm
Sería muy poco efectivo, el usuario sólo tendría que borrar la cookie para repetir. Se puede, pero lo veo ineficaz.

DOM (te doy la versión práctica, al grano): a través de las distintas clases e ID´s del documento, y apoyándose en JS, el navegador puede ir modificando el documento. Imagínate que creas <div class="formulario" />. Una vez se use el botón haría una llamada a la una función JS que modificaría el contenido de ese div (puede dejarlo en blanco, poner "Gracias por participar"...).

Saluetes.  :-d
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 23 de Marzo de 2007, 06:17:05 pm
Si no he entendido mal, lo que me recomiendas es meter el formulario en un DIV que tenga el id="divformulario" y otro DIV que fuese, por ejemplo, id="divmensaje", y en la marca FORM invocar un JavaScript para que se active con algo así como onSubmit="mostrar_mensaje();". ¿Va por ahí la cosa?
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 23 de Marzo de 2007, 06:45:13 pm
Yo lo que te recomiendo es que evites java si puedes hacerlo vía php (ambas maneras requieren el uso de cookies para controlar quién lo ha visto o quien no, bueno, salvo logueo, podrías almacenarlo en la BD).

Citar
meter el formulario en un DIV que tenga el id="divformulario" y otro DIV que fuese, por ejemplo, id="divmensaje", y en la marca FORM invocar un JavaScript para que se active con algo así como onSubmit="mostrar_mensaje();". ¿Va por ahí la cosa?

Podrías hacerlo con un no display, pero no iba por ahí, sustituyes el contenido de ese div. Donde está el formulario, una vez usado (tendrás que controlar quien lo ha usado con una cookie) aparece lo que tú quieras.

Para eso has de usar getElementById()

Saluetes. :-d
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 24 de Marzo de 2007, 12:59:34 pm
El problema de JavaScript es que puede ser deshabilitado por el visitante. Ahora bien, ¿no podría asimismo el cibernauta burlar cualquier sistema de ocultación o deshabilitación (ya fuese JavaScript, PHP u otros) de un formulario simplemente retrocediendo hacia atrás con el navegador, o hay alguna manera de impedir esto?
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 24 de Marzo de 2007, 03:50:11 pm
Con PHP, almacenando la información en una BD, es más jodido de burlar. Con un sistema de logueo es sencillo, cada usuario puede usar el formulario las veces que tú quieras. Si no quieres logueo puedes almacenar las IP´s, por ejemplo, dándoles caducidad (por aquello de las IP´s dinámicas).

Saluetes. :-d
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 24 de Marzo de 2007, 06:39:20 pm
Estoy como quien dice empezando en este mundo de la informática y del diseño web, y por tanto hay expresiones que son nuevas para mí. Deduzco que cuando hablas de "logueo" te refieres al sistema de identificación de usuario mediante login, pero no sé qué es una IP's. Por lo demás, ¿no existe algún modo de lograr la ocultación del formulario tras el envío de datos mediante otras vías, por ejemplo con hojas de estilo sin javascript?
Título: Re: Desactivar u ocultar formularios
Publicado por: Liamngls en 24 de Marzo de 2007, 07:52:41 pm
La IP es el identificador de cada conexión a internet, una persona conectada desde un ordenador adquiere una IP de su proveedor de internet, es un identificador único, pero hago la referencia sobre la conexión y no sobre la persona porque dos ordenadores en red en una misma ubicación física y con la misma conexión podrían tener la misma IP de cara a la red.

Hay IP's fijas (estáticas) e IP's que cambian (dinámicas), la mayoría de la gente usa IP's del segundo tipo, que cambian cada vez que se conectan a internet (entendiendo por conectar el encender el modem o router e iniciar una sesión de cualquier programa que requiera de internet para funcionar, navegador, messenger, etc).

http://es.wikipedia.org/wiki/Ip

Sinceramente, después de leer toda la conversación creo que le estás dando demasiadas vueltas a algo que es practicamente imposible de hacer, lo plantees como lo plantees un usuario medio podrá volver a utilizar el formulario tantas veces como quiera.

La mejor forma de reducir esa posibilidad es que hagas lo del filtado por usuarios registrados e IP's ....

- Un usuario registrado no puede enviar dos veces el formulario.
- Una misma IP no puede enviar el formulario dos veces.

Ejemplo: Un usuario registrado envía el formulario, intenta reenviarlo y recibe un aviso de que ya lo ha enviado.

A.- El usuario desiste.
B.- El usuario se registra de nuevo, al intentar reenviarlo recibe el mismo aviso.
1.- El usuario desiste.
2.- El usuario cambia la IP pero no de usuario, el nuevo usuario con nueva IP recibe el aviso de que ya lo ha enviado porque está grabado en una cookie.
A.- El usuario desiste.
B.- El usuario borra las cokies, reinicia la conexión y se registra de nuevo ... el usuario envía de nuevo el formulario ....

¿Merecerá la pena tanta molestia?
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 24 de Marzo de 2007, 08:37:47 pm
Por lo demás, ¿no existe algún modo de lograr la ocultación del formulario tras el envío de datos mediante otras vías, por ejemplo con hojas de estilo sin javascript?

Con un no display pero, ¿quién decide a quien se le hace el no display? O bien tiras de JS o de php.

Saluetes. :-d
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 30 de Marzo de 2007, 12:37:26 pm
¿Quizás con una combinación de hojas de estilo y PHP? En cualquier caso, veo que parece algo, si no imposible como dice Liamgls, si muy difícil y de eficacia muy precaria...

   Gracias de todas formas.
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 30 de Marzo de 2007, 07:34:54 pm
Citar
¿Quizás con una combinación de hojas de estilo y PHP?

Si usas PHP no tienes que recurrir a CSS, PHP genera el código, con que no incluya el formulario es suficiente.

Citar
En cualquier caso, veo que parece algo, si no imposible como dice Liamgls, si muy difícil y de eficacia muy precaria...

Imposible no es, hombre, y no es muy complicado. Más que eficacia hablaría de utilidad, es cierto que no va a ser 100% efectivo, pero si haces una encuesta necesitas algo que minimice el error, de lo contrario la encuesta será poco fiable.
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 30 de Marzo de 2007, 08:14:41 pm
Bueno, yo distinguiría entre "eficacia" y "utilidad". Personalmente considero que inhabilitar u ocultar un formulario es una medida útil, pero a juzgar por las respuestas obtenidas es poco eficaz, en el sentido de que el usuario puede revertir fácilmente esa deshabilitación u ocultación. Vendría a ser como cerrar una puerta que luego cualquiera puede abrir fácilmente...
Título: Re: Desactivar u ocultar formularios
Publicado por: halo en 30 de Marzo de 2007, 08:45:53 pm
Bueno, yo distinguiría entre "eficacia" y "utilidad". Personalmente considero que inhabilitar u ocultar un formulario es una medida útil, pero a juzgar por las respuestas obtenidas es poco eficaz, en el sentido de que el usuario puede revertir fácilmente esa deshabilitación u ocultación. Vendría a ser como cerrar una puerta que luego cualquiera puede abrir fácilmente...

Pon el mejor sistema antirobo en un Mercedes de 10 kilos y habrá quien lo robe, ponlo en un Seat Ibiza y no se lo llevará ni Dios. Si, por ejemplo, lo controlas mediante un logueo, necesitarán abrirse una nueva cuenta para volver a votar, si, además, no puede registrarse con la misma cuenta de correo, necesitará abrirse una nueva cuenta de correo. Además controlas la IP y le das caducidad, ¿crees que alguien va a tomarse la molestia de efectuar tantos registros e ir apurando proxys para desvirtuar tu formulario? Pues puede haber algún subnormal, pero no es lo normal. Nadie se tomará tantas molestias, será efectivo. :-d
Título: Re: Desactivar u ocultar formularios
Publicado por: Liamngls en 30 de Marzo de 2007, 09:33:58 pm
Bueno, quizás mi mensaje anterior sea un poco confuso, yo no pretendo decir que no sea funcional ... de hecho como dije en el otro mensaje limitar la encuesta a usuarios registrados y a una respuesta por IP me parece una buena opción, lo que creo que no merece la pena es buscar algo más complejo que eso porque siempre se podría volver a enviar tomándose las molestias oportunas ... tal como dice halo, siempre puede haber alguien que lo haga pero no es lo normal.
Título: Re: Desactivar u ocultar formularios
Publicado por: Rododendro en 31 de Marzo de 2007, 01:27:36 pm
En ese caso miraré por ahí a ver si encuentro algo que pueda servirme. Si doy con algún posible remedio ya lo comentaría aquí para ver qué opinión os merece.