Validación de sus datos

Debido a un error humano, la incomprensión humana, o la simple ignorancia, a veces la gente de entrada del estado incorrecto. Cada aplicación tiene que aplicar la validación de datos para que usted pueda saber si la información es un estado válido. Problema de validación no es sólo un problema de entrada de datos también puede ser un problema del programador. Por ejemplo, un humano podría introducir los datos correctamente, pero el código podría realizar algunas operaciones no válidas que resulta en la corrupción estatal. Usted necesita asegurarse de que la validación se produce con éxito. Validación de la teoría en una aplicación AJAX significa que el cliente o el servidor puede validar los datos. La validación para comprobar si un número válido se ha introducido se puede realizar ya sea en el lado del cliente o del lado del servidor . Imaginando la validación se realiza en el lado del cliente, puede definir los siguientes puntos:

• Es el uso de JavaScript para aplicar toda la validación.

• El cliente puede actuar y validar antes de enviar los datos al servidor, ahorrando así un viaje de vuelta al servidor.

• El cliente Web se considera insegura, así que el servidor puede recibir datos no válidos si la validación clientside es la validación solamente. Validación en el cliente ahorra energía de procesamiento en el servidor al hacer la validación y el uso de los recursos del cliente. El inconveniente es que de una aplicación HTML, el cliente es considerado inseguro, y los hackers siempre pueden pasar por alto los esfuerzos de seguridad de desarrollador AWeb. Usted puede minimizar los problemas, pero no puede eliminar los problemas. En contraste, veamos validación en el servidor , donde se pueden definir los siguientes puntos:

  

• Usted puede aplicar toda la validación en el idioma de su elección, ya que de Java, C #, C + +, PHP o Ruby.

• validación en el servidor requiere un viaje ida y vuelta entre el cliente y el servidor, que consume recursos de red.

En la fuente de ejemplo, la etiqueta img HTML tiene un atributo src, sino también un objetivo y un atributo onload. Desde la perspectiva del sistema nivel, esto significa que hay tres atributos. El problema con el filtro de servidor es que se trata del objetivo y los atributos onload como un atributo. Esto probablemente se debe a una aplicación de filtro de validación de nivel fue creado, que no comprobará los datos a nivel de sistema. Tenía las rutinas de validación, realizado tanto un sistema de validación de nivel y una solicitud de validación de nivel, el error más probable habría sido capturado. Estado y de la validación no es un problema sencillo. Estado y de validación de la participación tanto del lado del cliente y un servidor, e implican tanto el sistema de validación de nivel de aplicación y validación de nivel. En la arquitectura de la validación de propuestas, subsiste un problema: El cliente es considerado inseguro, pero el servidor espera que el cliente enviar los datos correctos. Esto podría ser un artículo para el desastre, pero no a causa de cómo se lleva a cabo la validación de la aplicación. Con la mayoría de las implementaciones técnicas, validación de aplicaciones implica el sistema de validación de nivel. Las revisiones de cliente de los datos para que los errores han sido ya sacadas. El lado del servidor asume que los datos son correctos, pero aún tiene la capacidad para detectar errores si se producen. Solución Para comenzar, echemos un vistazo a la página HTML que utiliza para sumar dos números.

 Fuente: / web / ROOT / artículos AJAX / DHTML / validación / test.html  Ejemplo de validación de 
Número 1
Número 2
Resultados

 Fuente: / web / ROOT / artículos AJAX / DHTML / validación / test.html  Ejemplo de validación de  
Número 1
Número 2
Resultados

• Cuando se extrae el estado de los números, debe hacer referencia al texto cuadro de propiedades de valor para Número1 y Número 2.

• Cuando se extrae el estado para el resultado, debe hacer referencia a la duración de la propiedad innerHTML.

• Usted debe validar el cuadro de texto los valores Número1 y Número2 como números de ser.

• Si la validación falla, se debe generar y mostrar un error que los usuarios puedan tomar medidas correctivas.

• No se debe mostrar los errores de una manera fragmentada. Las rutinas de validación debe pasar por todo el estado y generar errores por todo lo encontrado.

• Cuando no se producen más errores de validación, pase el estado genera a la persona que llama. Tenga en cuenta que los casos de múltiples estados podrían ocurrir. Usted debe notar la generación de múltiples errores o casos de múltiples estados. Cada vez que un algoritmo se enfrenta a varios resultados, los resultados se almacenan temporalmente en una matriz que es procesado por el llamador del algoritmo. Como se indica en el artículo 2, el artículo de bloque de código, también puede utilizar los bloques de código. Los bloques de código sería la opción más apropiada, porque no puede o no puede haber errores, y puede o no ser una instancia del Estado. Para ilustrar la complejidad, considere el código siguiente, que ilustra cada enfoque de llamar a la función GetState:

función GenerateState () (var noErrors = true; var result = GetState ( "identificador"); C1 for (int i = 0; c1 <result.errors.length; c1 + +) (/ / Hacer algo con noErrors error = false; ;) if (noErrors == true) (for (int c1 = 0; c1 <results.state.length; c1 + +) (/ / hacer algo con los resultados)))

La primera línea es una cesión de la noErrors variable. El noErrors variable se utiliza para indicar si los errores se producen cuando se extrae el estado. Si hay errores, entonces el procesamiento del Estado sería una tontería ya que no hay estado o si la hay, es incompleta. Llamar a la función GetState devuelve una instancia de objeto, que tiene dos miembros de datos: los errores y del estado. Los dos miembros de conjuntos de datos que contienen los errores y los casos de estado generado. Después de la llamada a GetState, un bucle reitera los errores de validación y, en caso necesario, genera una respuesta. Si se genera un error, el noErrors variable se le asigna un valor false, lo que indica un error. Si no hay errores, las instancias estatales generados se reiteró. GetState Como está codificado, se llama la función y los procesos del Estado. Si ocurre un error, entonces la persona que llama de GetState necesidades para diseccionar lo que salió mal y la forma de indicar los errores a la persona que llama. Otra solución es usar bloques de código que simplifican la forma en que se procesa el estado o los errores. Los bloques de código de simplificar el código, ya que le permiten centrarse en añadir valor con respecto al código. El código siguiente ilustra cómo una versión de GetState utiliza bloques de código:

función GenerateState () (GetState ( "Identifier", (error: function (errorItem) (/ / Hacer algo con error) Estado: function (stateInstance) (/ / Hacer algo con los resultados)));)

En la aplicación de GenerateState vez, la función de GetState se pasa una instancia de objeto que tiene dos métodos: el error y estado. Cada vez que ocurre un error, se llama error de la función. Si no se producen errores, entonces se llama a la función de estado. El llamador de GenerateState tiene una implementación sencilla, ya que sólo tiene que ocuparse de los casos en que un error o una instancia de estado se producen. Si la persona que llama no proporciona una implementación para el error de la función, a continuación, los errores que se producen son ignorados, y sólo espera la llamada de una instancia de estado válido. Los detalles de SetState y cómo usarlo son similares a GetState. La diferencia con SetState es que un Estado se asigna a una representación. Ahora veamos los detalles de implementación del nuevo formulario HTML, como un cambio adicional aún no se ha discutido, y que necesita ser cubierto antes de discutir los detalles de GetState o SetState:

Número 1
Número 2
Resultados

El texto en negrita se muestra la adición de elementos span HTML, que se utiliza para mostrar los errores asociados con los datos. En las aplicaciones anteriores, podría haber utilizado un cuadro de diálogo para indicar errores. El problema con los cuadros de diálogo es que hablan acerca de los datos problemáticos, pero no precisarlo. Con una forma bastante compleja, los usuarios podrían estar preguntándose dónde está el error. HTML dinámico (DHTML) le da la posibilidad de modificar los elementos HTML, con lo que la necesidad de utilizar un cuadro de diálogo innecesario. En este artículo se utiliza un elemento HTML que abarcan contiene el error. Usted puede usar lo que quieras en tus aplicaciones. Tal vez quieras usar texto parpadeante, o tal vez quiera cambiar las fuentes es su elección. Es importante, sin embargo, que el error asociado con el elemento HTML locales. Ahora vamos a cubrir los detalles de GetState, que puede ser un poco largo:

función GetState (identificador, CB) ( if (identificador == "ToAdd") (/ / 1var form = document.getElementById ( "calculadora"); document.getElementById ( "Number1Error"). innerHTML = ""; / / 2document.getElementById ( "Number2Error"). innerHTML = ""; var obj = new Object (); / / 3 didError var = false; / / 4try ( obj.Number1 = Converter.convertToInteger (form.Number1.value); / / 5) Catch (e) (didError = true; document.getElementById ( "Number1Error"). InnerHTML = e.toString (), si (cb.error) ( (cb.error (section: "ToAdd", tema: "Número1", error: e.toString ()}); / / 6)) Try (obj.Number2 = Converter.convertToInteger (form.Number2.value);) catch (e) (didError = true; document.getElementById ( "Number2Error"). InnerHTML = e.toString (), si (cb. ) (error cb.error ((section: "ToAdd", tema: "Número 2", error: e.toString ()});)) if (cb.state & &! didError) ( cb.state ((section: "ToAdd", valor: obj)); / / 7)) Else if (identificador == "resultado") (var element = Navigation.findChild ( "calculadora", "resultado"); Navigation.findChild ( "calculadora", "resulterror"). InnerHTML = ""; var obj = new Object (); try (obj.Result = Converter.convertToInteger (element.innerHTML);) catch (e) (Navigation.findChild ( "calculadora", "resulterror"). innerHTML = e.toString (), si (CB . error) (cb.error ((section: "Resultados", tema: "Resultado", error: e.toString ()});) return;) if (cb.state) (cb.state ((section: " "consecuencia, el valor: obj));)) else (if (cb.error) (cb.error ((section: identificador de error:" identificador de Estado ( "+ identificador +" no existe "));)))

El código no es complicado, pero largo, porque la tarea que hay que lograr es largo. A continuación se explica cada una de las líneas de código en negrita. Los números en la lista corresponden a los números en los comentarios que aparecen en el código en negrita:

1. GetState toma una decisión para determinar que la representación debe convertirse en un estado.

2. GetState restablece los mensajes de error asociado con la representación. En este artículo, lo que significa la asignación de la propiedad innerHTML de los distintos elementos HTML abarcan a un búfer vacío. En su solicitud, que podría significar el restablecimiento del texto parpadeante o cambiar la fuente del texto. Es importante para restablecer el estado de error para que no viejos errores se muestran como la validación está siendo ejecutado.

3. GetState instancia de un objeto utilizando el tipo de objeto. La creación de instancias y la utilización del tipo de objeto tiene un propósito. Usted puede verse tentado a instancia de un tipo que tiene predefinidas miembros de datos y métodos, pero que no es aconsejable. Imagine usando DHTML y la generación de una forma dinámica. Podría ser que un contexto, de la forma se ha generado un miembro de datos, y otro contexto, no. Desde la perspectiva del Estado, que desea conocer el estado que refleje el contexto, no lo que usted piensa que el contexto debe ser. Así, cuando una instancia de un objeto que no tiene miembros de datos y de asignar los miembros de datos de forma dinámica, que está garantizando únicamente que los datos asociados con el contexto presente.

4. El didError variable es una bandera que indica si se produjo un error de validación. Esta bandera se pone de relieve aquí para referencia cruzada de la discusión anterior sobre la razón de la utilización de las devoluciones de llamada y no bucles. La ilustración de la muestra didError que el algoritmo de GetState necesita un seguimiento de si se produjo un error.

5. Converter convierte los datos HTML en el tipo solicitado, que en el caso del ejemplo es un valor entero. La conversión es una llamada a la función que varía con la aplicación que está escrito. La conversión incluye una validación. Tenga en cuenta que la conversión se encapsula dentro de un bloque de excepción. El uso de un bloque de excepción es la preferida, ya que todos los errores serán capturados. Las rutinas de validación puede pasar por alto algunos errores, pero el bloque de excepción puede capturar y mostrar los errores.

6. Si se genera una excepción, el bloque catch captura la excepción. Una vez que la excepción ha sido capturado, definido por el usuario de devolución de llamada de error se llama y puede procesar el error más.

7. Si no se generan errores, definido por el usuario de devolución de llamada se denomina con el estado de forma. El código que no está en negritas es o una réplica de la funcionalidad o el código de apoyo a uno de los siete detalles. Recuerde que el GetState y funcionalidades SetState son autónomos. Por ejemplo, cuando la validación falla y se genera un error, usted tiene la opción de hacer la pantalla el mensaje de devolución de llamada. Sin embargo, este enfoque no es deseable, porque el código de estado tendría que conocer los detalles de la representación. Según el patrón de representación Morphing, que no es conveniente que el llamador de GetState o SetState saber cómo se aplican las representaciones. Esto promueve una disociación, así como el GetState y funciones SetState no saben el origen de los datos utilizados para asignar un estado en una representación. A modo de ejemplo, el código siguiente se muestra la funcionalidad SetState completa y referencias cruzadas de los detalles que aplicar la misma funcionalidad que los siete detalles definidos de la función de GetState:

función SetState (identificador, obj, CB) ( if (identificador == "ToAdd") (/ / 1var form = document.getElementById ( "calculadora"); document.getElementById ( "Number1Error"). innerHTML = ""; / / 2document.getElementById ( "Number2Error"). innerHTML = ""; if (typeof (obj.Number1)! = "número") (/ / 5var buffer = "obj.Number1 espera un número, sino que es un" + typeof (obj.Number1); document.getElementById ( "Number1Error"). innerHTML = buffer; if (typeof (CB)! = "undefined" & & CB. error) ( (cb.error (section: "ToAdd", el identificador: "Número1", error: buffer)); / / 6)))) = Element.innerHTML obj.Result;) else (if (typeof (CB)! = "Undefined" & & cb.error) (cb.error ((section: identificador de error: "identificador de Estado (" + identificador de + "no existe"));))

Cuando se asigna la representación de un Estado, el mismo tipo de lógica se lleva a cabo, con la excepción de las líneas 3 y 7 de la lista de código anterior. Esas cifras no se hace referencia aquí, porque cuando se asigna un estado, que está aprobada la instancia del objeto que contiene el estado. La validación en el servidor no aparece, porque este artículo se centra en las soluciones del lado del cliente. Para completar la solución, usaría una petición Ajax y enviar o recibir el estado de la validación en el servidor no aparece, porque este artículo se centra en las soluciones del lado del cliente. ilustra la representación del Estado en un modo de sólo lectura. El uso de este artículo, puede recuperar el estado de forma remota, lo mostrará en modo de sólo lectura, editar, y luego enviarla de nuevo al servidor. Poner todo esto junto, es necesario recordar los siguientes aspectos acerca de la validación:

• La validación no se trata de la validación de algunos datos. Validación en primer lugar, se trata de definir un estado que se asocia con una representación. El propósito de la validación es asegurar que cuando se transfiere del estado, el estado es coherente.

• Cuando se realiza la validación, si el Estado se transfiere al servidor, lo más probable es que el cliente no puede ser invocado. El cliente es considerado inseguro, y por lo tanto la mayoría de los que usted debe esperar es el sistema de validación de nivel que elimina los errores de la "tonta". Esto no quiere decir que usted no puede realizar la validación a nivel de aplicación no sólo poner una fe ciega en la validación si la aplicación requiere de alta seguridad.

• Cuando el cliente recibe un estado del servidor, no necesitan ser validados, ya que el servidor se considera seguro. Metafóricamente hablando, es como ir a un banco: el cajero de un banco no confía en ti y por lo tanto considera que, el individuo, inseguro. El inverso no es cierto, como lo hace confiar en el narrador y no cuestionar lo que dice el narrador o el dinero que usted recibe.

• Cuando la validación de los errores, se utiliza DHTML para mostrar un error cerca del lugar donde ocurrió. Por ejemplo, no generan un cuadro de diálogo, ya que puede conducir a los mensajes de error crípticos.

• Cuando la aplicación de la validación, uso y funcionalidad del estado recibe del Estado de tal manera que el Estado, la representación, y los mecanismos utilizados para la transferencia de estado puede ser disociado de la otra.

• Uso de bloques de código de manera que la funcionalidad del usuario se llama cuando sea necesario, el desacoplamiento del código.

un artículo presentado por Sonja Lande


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: Este artículo "Validación de sus datos", fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 322 users browsing the articles directory