secciones

Código en el cliente / Código en el servidor

En Programando…: Prevenir múltiples submits Joaquín Bravo puntualiza mi anterior entrada sobre creación de formularios .

Efectivamente, el sistema no evita en todos los casos que se realice un doble submit. El cliente puede tener el javascript desactivado, para empezar. Y, en definitiva, evitar que se le realice a un cliente un doble cargo en su tarjeta de crédito es suficientemente importante como para controlarlo realmente. Joaquín nos proporciona una buena colección de enlaces para conseguir este control.

El sistema que yo proponía me sigue pareciendo válido para proporcionar “feedback” al usuario y evitar la tentación de pulsar dos veces, lo que siempre produce confusión en el usuario. Lo cual no quiere decir que si el doble submit es lo suficientemente peligroso se deba controlar en el servidor.

En cualquier caso, este es un problema que podríamos englobar dentro de un tipo más amplio: ¿Debemos programar algo en el cliente (javascript) o en el servidor (java, php, etc)?

Validaciones de formularios web, interacción con el usuario…

Las ventajas de la programación en el cliente son:

  • Es una interacción más rápida con el usuario. Se puede validar inmediatamente un campo y no tener que esperar a que la petición le llegue al servidor y vuelva al cliente. Incluso se puede validar “conforme se escribe”, antes de que se pulse sobre el botón “enviar”.
  • Mediante los eventos de javascript se puede conseguir una interacción más fina con el usuario, más cercana y en ocasiones igual a la que se puede conseguir con una aplicación cliente.

Las desventajas también son claras:

  • Nada nos asegura que el cliente tiene activado el javascript.
  • Nada nos asegura que el cliente interpretará adecuadamente el javascript que se le envía. Diferentes navegadores tienen incompatibilidades en el javascript que ejecutan y dichas incompatibilidades son mayores cuanto más “fina” es la interacción que queremos realizar.
  • Desde un punto de vista de la seguridad, cualquier cosa que viene del cliente es insegura. No podemos fiarnos de una validación en el cliente.

Corresponde al programador decidir qué tipo de programación (de cliente o de servidor) es necesaria en cada momento. De hecho, en muchos casos lo que procede es una doble programación: Deberemos validar el formulario en el servidor (por seguridad y para asegurar el funcionamiento de la aplicación web) y también en el cliente para aumentar la usabilidad de la misma.

Anterior: Creando formularios web Siguiente: Accesibilidad para indiferentes