Validar os seus dados

Devido a um erro humano incompreensão humana, ou simples ignorância, as pessoas às vezes o estado de entrada incorreta. Cada aplicação tem de implementar a validação de dados para que você possa saber se os dados é um estado válido. Validação problema não é apenas um problema de entrada de dados também pode ser um problema do programador. Por exemplo, um humano poderia inserir os dados corretamente, mas o código poderia executar algumas operações inválidas, resultando em corrupção do Estado. Você precisa garantir que a validação ocorre com êxito. Validação Teoria em uma aplicação Ajax significa que o cliente ou servidor pode validar os dados. A validação para verificar se um número válido foi digitado pode ser executado em ambos o lado do cliente ou do lado do servidor . Imaginando a validação é executada no lado do cliente, você pode definir os seguintes pontos:

• Pode usar o JavaScript para implementar todas as validação.

• O cliente pode agir e validar antes de enviar os dados para o servidor, poupando-se assim uma ida e volta para o servidor.

• O cliente da Web é considerado inseguro, então o servidor pode receber dados inválidos se a validação clientside é a validação só. Validação do cliente economiza energia de processamento no lado do servidor, fazendo a validação e utilização dos recursos do cliente. A desvantagem é que em um aplicativo HTML, o cliente é considerado inseguro, e os hackers podem sempre ignorar os esforços de segurança do desenvolvedor aweb. Você pode minimizar os problemas, mas você não pode eliminar os problemas. Em contrapartida, vamos olhar para a validação do lado do servidor , onde você pode definir os seguintes pontos:

  

• Você pode implementar todas as validação na língua de escolha, se isso é Java, C #, C + +, PHP ou Ruby.

• Server-side de validação requer uma ida e volta entre o cliente eo servidor, que desperdiça os recursos da rede.

Na fonte de exemplo, a img tag HTML tem um atributo src, mas também um objectivo e um atributo onload. De uma perspectiva de nível de sistema, isso significa que existem três atributos. O problema com o filtro de servidor é que trata o alvo e os atributos onload como um atributo. Isso provavelmente ocorre porque um aplicativo filtrar nível validação foi criado, que não verifica os dados no nível do sistema. Tinha as rotinas de validação realizados tanto um sistema de validação de nível e um pedido de validação de nível, o erro mais provável teria sido capturado. Estado e de validação não são um problema simples. Estado e validação envolvem ambos os lados de um cliente e um servidor, e envolvem tanto o sistema de validação de nível de aplicativo e validação de nível. Validação Na arquitetura proposta, um problema permanece: O cliente é considerado inseguro, mas o servidor espera que o cliente enviar os dados corretos. Este poderia ser um artigo para o desastre, mas não por causa da forma como validação de aplicativo é implementado. Com a maioria das implementações técnicas, validação de aplicação do sistema implica a validação do nível. As correções de segurança dos dados do cliente para que os erros estão já removido. O lado do servidor assume que os dados estão corretos, mas ainda tem a capacidade de detectar erros quando eles ocorrem. Solução Para começar, vamos olhar para a página HTML usada para somar dois números.

 Fonte: / website / ROOT / artigos ajax / dhtml / validação / teste.html  Exemplo de validação 
Número 1
Número 2
Resultado

 Fonte: / website / ROOT / artigos ajax / dhtml / validação / teste.html  Exemplo de validação  
Número 1
Número 2
Resultado

• Quando a extração do estado para os números, você deve fazer referência a propriedades da caixa de texto valor para Número1 e Numero2.

• Quando a extração do estado para o resultado, você deve fazer referência a extensão da propriedade innerHTML.

• Você deve validar a caixa de texto valores Número1 e Numero2 como sendo números.

• Se a validação falhar, você deve gerar e exibir um erro que os usuários possam tomar medidas correctivas.

• Você não deve mostrar os erros de forma fragmentada. As rotinas de validação deve percorrer todo o estado e gerar erros por tudo encontrado.

• Quando não houver mais erros de validação ocorrer, passe o estado gerado para o chamador. Note que múltiplas instâncias estaduais podem ocorrer. Você deve observar a geração de vários erros ou múltiplas instâncias do Estado. Sempre que um algoritmo é confrontada com vários resultados, os resultados são armazenados temporariamente em uma matriz que é processado pelo chamador do algoritmo. Como mostrado no artigo 2 º do artigo bloco de código, você também pode usar blocos de código. Blocos de código seria a escolha adequada, porque não pode ou não ser erros, e não podem ou não ser um exemplo do estado. Para ilustrar as complexidades, considere o seguinte código, que ilustra cada abordagem de chamar a função GetState:

GenerateState function () (var noErrors = true; var result = GetState (identificador "); c1 for (i = 0; c1 <result.errors.length; c1 + +) (/ / Faz alguma coisa com noErrors erro = false; ) if (noErrors == true) (for (int c1 = 0; c1 <results.state.length; c1 + +) (/ / Faz alguma coisa com os resultados)))

A primeira linha é uma atribuição do noErrors variável. O noErrors variável é usada para indicar se os erros ocorrem quando a extração do estado. Se houver erros, então processar o Estado seria bobagem pois não há nenhum estado ou se existe, é incompleta. Chamando a função GetState retorna uma instância do objeto, que tem dois membros de dados: erros e estado. Os dois membros de dados são matrizes que contêm os erros e as instâncias estaduais gerados. Após a chamada para GetState, um ciclo repete os erros de validação e, se necessário, gera uma resposta. Se um erro é gerado, o noErrors variável é atribuído um valor false, indicando um erro. Se não houver erros, as instâncias estaduais gerados são iteradas. GetState Como é codificado, a função é chamada e os processos do Estado. Se ocorrer um erro, então o chamador GetState necessita dissecar o que correu mal e como indicam os erros para o chamador. Outra solução é usar blocos de código que simplificam a forma como o estado ou os erros são tratados. Blocos de código simplificar o código, porque eles permitem que você se concentre na adição de valor em relação ao código. O código a seguir ilustra como uma versão do GetState utiliza blocos de código:

GenerateState function () (GetState ( "Identifier", (erro: function (ErrorItem) (/ / Faz alguma coisa com o erro) Estado: function (stateInstance) (/ / Faça algo com resultados)));)

Na execução de GenerateState vez, a função GetState é passada uma instância do objeto que possui dois métodos: erro e do estado. Sempre que ocorre um erro, o erro da função é chamado. Se não ocorrer erros, então o Estado função é chamada. O chamador GenerateState tem uma implementação simplificada, porque ele só precisa cuidar dos casos, quando um erro ou uma instância de estado ocorrer. Se o chamador não fornece uma implementação para a função de erro, então os erros que ocorrem são ignorados, eo chamador aguarda apenas uma instância de estado válido. Os detalhes da SetState e como usá-lo são semelhantes aos GetState. A diferença com SetState é um estado que está sendo atribuído a uma representação. Agora vamos olhar para os detalhes da implementação do formulário HTML de novo, como uma mudança adicional não foi ainda discutida, e ela precisa ser coberto antes de discutir os detalhes da GetState ou SetState:

Número 1
Número 2
Resultado

O texto em negrito mostra a adição de elementos span HTML, que você usa para mostrar os erros associados com os dados. Em aplicações passado, você poderia ter usado uma caixa de diálogo para indicar erros. O problema com as caixas de diálogo é que eles falam sobre os dados problemáticos, mas não localizá-lo. Com uma forma bastante complexa, os usuários podem ficar se perguntando onde está o erro. DHTML (Dynamic HTML) lhe dá a capacidade de modificar os elementos HTML, tornando assim a necessidade de utilizar uma caixa de diálogo desnecessário. Este artigo usa um elemento span HTML que contém o erro. Você pode usar o que quiser em suas aplicações. Talvez você queira usar texto intermitente, ou talvez você quer alterar as fontes a escolha é sua. É importante, porém, que o erro associado com o elemento HTML local. Agora vamos cobrir os detalhes de GetState, que pode ser um pouco demorado:

GetState função (identificador, cb) ( if (identificador == "agregar") (/ / 1var form = document.getElementById ( "guias"); 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 (); if (cb.error) ( cb.error (secção (: "agregar", item: "Número1" erro: e.toString ()}); / 6)) Try (obj.Number2 = Converter.convertToInteger (form.Number2.value);) catch (e) (didError = true; document.getElementById ( "Number2Error"). InnerHTML = e.toString (); if (cb. erro) (cb.error (secção (: "agregar", item "Numero2" erro: e.toString ()});)) if (cb.state & &! didError) ( cb.state (secção (: "agregar", valor: obj)); / / 7)) Else if (identificador de 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 (); if (cb . error) (cb.error (secção (: "Resultado", item "Resultado", error: e.toString ()}); return)) if (cb.state) (cb.state (secção (: " resultado ", valor: obj));)) else (if (cb.error) (cb.error (secção (: identificador de erro:" identificador Estado identificador ( "+ +" não existe "));)))

O código não é complicado, mas demorado, porque a tarefa que precisa realizar é longa. A lista a seguir explica cada uma das linhas de código de negrito. Os números na lista correspondem aos números apresentados nos comentários no código em destaque:

1. GetState toma a decisão de determinar que a representação deve ser convertido em um estado.

2. GetState redefine as mensagens de erro associadas à representação. Neste artigo, o que significa atribuir a propriedade innerHTML dos elementos individuais span HTML para um buffer vazio. Em sua petição, que poderá significar a redefinição do texto a piscar ou mudar a fonte do texto. É importante para repor o estado de erro de modo que não há erros de idade são apresentados como a validação está sendo executado.

3. GetState instancia um objeto usando o tipo de objeto. A instanciação e uso do tipo de objeto tem um propósito. Você pode ser tentado a uma instância de um tipo que tem membros predefinidos de dados e métodos, mas isso não é recomendado. Imagine usar DHTML e gerando uma forma dinâmica. Pode ser que um quadro do formulário gerado tem um membro de dados, e um outro contexto, não. De uma perspectiva de Estado, você quer saber o estado que reflecte o contexto, não o que você pensar o contexto deve ser. Assim, quando você instanciar um objeto que não tem membros de dados e atribuir os membros de dados de forma dinâmica, você está garantindo apenas que os dados associados com o contexto está presente.

4. O didError variável é um sinalizador que indica se um erro de validação ocorreu. Esta bandeira é destaque aqui a referência cruzada da discussão anterior sobre a razão de usar callbacks e não loops. A ilustração mostra didError que o algoritmo GetState necessidades para controlar se um erro ocorreu.

5. Converter converte os dados em HTML do tipo solicitado, o que no caso do exemplo é um valor inteiro. A conversão é uma chamada de função que varia com a aplicação que está sendo escrito. A conversão inclui uma validação. Note-se que a conversão é encapsulado em um bloco de exceção. A utilização de um bloco de exceção é o preferido, porque todos os erros serão capturados. As rotinas de validação pode perder alguns erros, mas o bloco de exceção pode capturar e exibir esses erros.

6. Se uma exceção é gerada, o bloco catch captura a exceção. Uma vez que a exceção foi capturado, definida pelo usuário chamada de erro é chamado e pode processar o erro mais.

7. Se nenhum erro for gerado, definido pelo usuário callback é chamado com o estado do formulário. O código que não está em negrito ou é uma réplica do código de funcionalidade ou suporte para um dos sete maiores detalhes. Lembre-se que o GetState e funcionalidades SetState são auto-suficientes. Por exemplo, quando a validação falha e é gerado um erro, você tem a opção de fazer a exibição da mensagem de retorno. No entanto, esta abordagem não é desejável, porque o código do estado teria que saber sobre os detalhes de representação. Conforme o padrão Morphing Representação, não é desejável ter o chamador GetState ou SetState saber como as representações são implementadas. Isto promove uma dissociação, assim como o GetState e funções SetState não sabe a origem dos dados utilizados para atribuir um estado em uma representação. Para fins de ilustração, o código a seguir mostra a funcionalidade SetState completo e referências cruzadas os detalhes que implementam a mesma funcionalidade que os sete definidos detalhes da função GetState:

SetState função (identificador, obj, cb) ( if (identificador == "agregar") (/ / 1var form = document.getElementById ( "guias"); document.getElementById ( "Number1Error"). innerHTML = ""; / 2document.getElementById ( "Number2Error"). innerHTML = ""; if (typeof (obj.Number1)! = "number") (/ / 5var buffer = "obj.Number1 esperado um número, mas é um" + typeof (obj.Number1); document.getElementById ( "Number1Error"). buffer = innerHTML if (typeof cb ()! = "undefined" & & cb. error) ( cb.error (secção (: "agregar", identificador: "Número1", erro: buffer)); / 6)))) Obj.Result = element.innerHTML;) else (if (typeof cb ()! = "Undefined" & & cb.error) (cb.error (secção (: identificador de erro: "identificador de Estado (" + identificador + "não existe"));))

Ao atribuir a representação de um estado, o mesmo tipo de lógica é realizado, com excepção das linhas 3 e 7 a partir do anúncio de código anterior. Esses números não são referenciados aqui, porque quando a atribuição de um estado, você passou a instância do objeto que contém o estado. A validação do lado do servidor não é mostrado, porque este artigo incide sobre soluções do lado do cliente. Para completar a solução, você usaria uma solicitação do Ajax e enviar ou receber do Estado a validação do lado do servidor não é mostrado, porque este artigo incide sobre soluções do lado do cliente. representação ilustra o estado em um modo somente leitura. Utilizando este artigo, você pode recuperar o estado remotamente, exibi-lo em modo somente leitura, editá-lo e enviá-lo de volta para o servidor. Colocando tudo isso junto, você precisa se lembrar das seguintes coisas sobre a validação:

• Validação não é sobre a validação de alguns dados. Validação primeiro e mais importante é sobre a definição de um estado que está associado com uma representação. O objetivo da validação é assegurar que quando o estado é transferido, o Estado é consistente.

• Ao realizar a validação, se o Estado é transferido para o servidor, então provavelmente o cliente não pode ser invocado. O cliente é considerado inseguro e, portanto, o máximo que você deve esperar é o sistema de validação de nível que elimina erros de "burro". Isso não quer dizer que você não pode executar aplicações de validação de nível só não colocou fé cega para a validação se o aplicativo requer alta segurança.

• Quando o cliente recebe um estado do servidor, ele não precisa de ser validado, porque o servidor é considerado seguro. Metaforicamente falando, é como ir a um banco: o caixa do banco não confia em você e, portanto, considera que, o indivíduo, inseguro. O inverso não é verdadeiro, porque você não confia o caixa e não questionar o que o narrador diz ou o dinheiro que você recebe.

• Quando os erros de validação, você usa DHTML para mostrar um erro perto do local onde ele ocorreu. Por exemplo, não geram uma caixa de diálogo, porque isso pode levar a mensagens de erro enigmáticas.

• Na execução da validação, uso e funcionalidade de obter o estado do estado de forma a que o estado, representação e mecanismos de transferência de estado pode ser dissociado do outro.

• Use blocos de código para que a funcionalidade do usuário é chamado quando necessário, a dissociação do código.

um artigo submetido por Sonja Lande


Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre.
Importante: Este artigo "Validação de seus dados" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.


Online: 214 users browsing the articles directory   


  

|