Validation de vos donnéesEn raison d'une erreur humaine, de l'incompréhension humaine, ou la simple ignorance, les gens parfois la contribution de l'état incorrect. Toute demande doit mettre en œuvre la validation des données afin que vous puissiez savoir si les données sont un état valide. Problème de validation n'est pas seulement un problème d'entrée de données qu'il peut aussi être un problème de programmation. Par exemple, un humain peut saisir les données correctement, mais le code peut effectuer certaines opérations non valides résultant de la corruption de l'Etat. Vous devez vous assurer que la validation se produit avec succès. Validation de théories en une application Ajax signifie que le client ou le serveur peut valider les données. La validation de vérifier si un numéro valide a été entrée peut être effectuée soit sur le côté client ou côté serveur . Imaginer la validation est effectuée du côté du client, vous pouvez définir les points suivants: • Vous utilisez JavaScript pour mettre en œuvre toutes validation. • Le client peut agir et de valider avant de soumettre les données au serveur, économisant ainsi un aller-retour au serveur. • Le client Web est considéré comme peu sûr, de sorte que le serveur peut recevoir des données non valides si la validation côté client est la validation seulement. Validation côté client permet d'économiser la puissance de traitement côté serveur en procédant de la validation et l'utilisation des ressources du client. L'inconvénient est que dans une application HTML, le client est considéré comme précaire, et les pirates peuvent toujours contourner les efforts de sécurité de développeur AWeb. Vous pouvez minimiser les problèmes, mais vous ne pouvez pas éliminer les problèmes. En revanche, penchons-nous sur la validation côté serveur , où vous pouvez définir les points suivants:
• Vous pouvez appliquer tous de validation dans la langue de son choix, qu'il s'agisse de Java, C #, C + +, PHP ou Ruby. • validation côté serveur nécessite un aller-retour entre le client et le serveur, qui gaspille les ressources du réseau. Dans la source, par exemple, la balise img HTML a un attribut src, mais aussi une cible et un attribut onload. D'un système de point de vue niveau, cela signifie qu'il ya trois attributs. Le problème avec le filtre serveur est qu'elle traite la cible et les attributs onload comme un attribut. Cela se produit probablement en raison d'une demande de validation au niveau de filtre a été créé qui n'a pas vérifié les données au niveau du système. Avait les routines de validation effectués à la fois un système de validation au niveau et une demande de validation en niveau, l'erreur la plus probable aurait été capturé. État et de validation ne sont pas un problème simple. Etat et la validation impliquent à la fois côté client et un serveur, et impliquer à la fois du système de validation au niveau et à l'application de validation de niveau. Dans l'architecture de validation proposés, un problème subsiste: le client est considéré comme précaire, mais le serveur s'attend à ce que le client envoyer les données à droite. Cela pourrait être un article de la catastrophe, mais pas à cause de la façon dont la demande de validation est mis en œuvre. Avec la plupart des implémentations techniques, la validation suppose l'application du système de validation au niveau. Les correctifs client constituent les données afin que les erreurs sont déjà retirés. Le côté serveur suppose que les données sont correctes, mais a encore la capacité de déceler les erreurs lorsqu'elles surviennent. Solution Pour commencer, penchons-nous sur la page HTML utilisé pour ajouter deux nombres. Source: / site / ROOT / articles ajax / dhtml / validation / test.html Source: / site / ROOT / articles ajax / dhtml / validation / test.html • Lors de l'extraction de l'État pour les chiffres, vous devez faire référence à des propriétés de valeur zone de texte pour number1 et nombre2. • Lors de l'extraction de l'Etat pour le résultat, vous devez faire référence à la durée de la propriété innerHTML. • Vous devez valider la zone de texte valeurs number1 et Number2 que les numéros de l'être. • Si la validation échoue, vous devez générer et afficher une erreur si les utilisateurs peuvent prendre des mesures correctives. • Vous ne devez pas afficher les erreurs sur une base ponctuelle. Les routines de validation doit passer par l'Etat tout entier et générer des erreurs pour tout trouvé. • Quand aucune des erreurs de validation plus se produire, transmettre l'état généré à l'appelant. Notez que l'état de plusieurs cas peuvent se produire. Vous devriez remarquer la génération d'erreurs multiples ou des instances de l'état multiples. Chaque fois qu'un algorithme est confronté à plusieurs résultats, les résultats sont stockés temporairement dans un tableau qui est générée par l'appelant de l'algorithme. Comme le montre l'article 2 de l'article bloc de code, vous pouvez aussi utiliser des blocs de code. Les blocs de code serait le choix approprié, car il n'y mai mai ou ne pas être des erreurs, et il n'y mai mai ou ne pas être une instance de l'Etat. Afin d'illustrer la complexité, le code suivant, qui illustre chaque approche d'appeler la fonction GetState: GenerateState fonction () (var noErrors = true; var result = GetState ( "identifiant") for (int c1 = 0; C1 <result.errors.length; C1 + +) (/ / Do something with noErrors erreur = false; ) if (noErrors == true) (for (int c1 = 0; C1 <results.state.length; C1 + +) (/ / Faire quelque chose avec les résultats))) La première ligne est une cession de l'noErrors variable. Le noErrors variable est utilisée pour indiquer si des erreurs se produisent lors de l'extraction de l'Etat. S'il ya des erreurs, puis la transformation de l'État serait stupide car il n'y a pas d'état ou si il ya, elle est incomplète. GetState Appeler la fonction retourne une instance de l'objet, qui comporte deux membres de données: les erreurs et l'Etat. Les deux membres de données sont des tableaux qui contiennent des erreurs et a généré des instances de l'Etat. Après l'appel de GetState, une boucle parcourt les erreurs de validation et, si nécessaire, génère une réponse. Si une erreur est généré, le noErrors variable est affecté d'une valeur fausse, indiquant une erreur. S'il n'y a pas d'erreurs, les instances de l'Etat générées sont itérées. Comme GetState est codé, la fonction est appelée et les processus de l'État. Si une erreur se produit, alors l'appelant de GetState besoins de disséquer ce qui s'est passé et comment indiquer les erreurs à l'appelant. Une autre solution consiste à utiliser les blocs de code qui simplifient la façon dont l'État ou des erreurs sont traitées. Les blocs de code de simplifier le code, car ils vous permettent de mettre l'accent sur la valeur ajoutée par rapport au code. Le code suivant illustre la façon dont une version de GetState utilise des blocs de code: GenerateState fonction () (GetState ( "Identifier", (erreur: function (errorItem) (/ / Do something) Etat avec l'erreur: function (stateInstance) (/ / Faire quelque chose avec des résultats)));) Dans la mise en œuvre de modification GenerateState, la fonction GetState est passé une instance d'objet qui a deux méthodes: l'erreur et l'Etat. Chaque fois qu'une erreur se produit, l'erreur de fonction est appelée. Si aucune des erreurs se produisent, alors l'état fonction est appelée. L'appelant de GenerateState possède une implémentation simplifiée, car il n'a besoin que de s'occuper des cas où une erreur ou d'une instance étatique se produire. Si l'appelant ne fournit pas une application pour la fonction erreur, alors toute les erreurs qui pourraient se produire sont ignorés, et l'appelant n'attend que pour une instance valide de l'État. Les détails de SetState et comment l'utiliser sont similaires à GetState. La différence avec SetState est qu'un Etat est d'être affecté à une représentation. Maintenant, nous allons regarder les détails d'implémentation du formulaire HTML de nouveau, comme un changement supplémentaire n'a pas encore été discutée, et il doit être couvert avant de discuter les détails de GetState ou SetState: Le texte en gras correspond à l'ajout d'éléments span HTML, que vous utilisez pour afficher toutes les erreurs associées aux données. Dans les applications passé, vous auriez pu utiliser une boîte de dialogue pour indiquer les erreurs. Le problème avec les boîtes de dialogue, c'est qu'ils parlent des données problématiques, mais ne pas l'identifier. Avec une forme assez complexe, les utilisateurs pourraient se demander où est l'erreur. DHTML (Dynamic HTML) vous donne la possibilité de modifier les éléments HTML, rendant ainsi la nécessité d'utiliser une boîte de dialogue inutiles. Cet article utilise un élément span HTML contient l'erreur. Vous pouvez utiliser ce que vous voulez dans vos applications. Peut-être que vous souhaitez utiliser le texte clignotant, ou peut-être vous voulez changer de police, c'est votre choix. Il est important, cependant, que l'on peut associer l'erreur avec l'élément HTML local. Maintenant, nous allons couvrir les détails des GetState, qui peut être un peu longue: fonction GetState (identifiant, CB) ( if (identifiant == "Pour ajouter") (/ / 1var form = document.getElementById ( "Calculator"); 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 (section: "Pour ajouter", Article: «numéro1", erreur: e.toString ()}); / / 6Try ()) obj.Number2 = Converter.convertToInteger (form.Number2.value);) catch (e) (didError = true; document.getElementById ( "Number2Error"). InnerHTML = e.toString (); if (cb. Error) (cb.error ((section: "Pour ajouter", item: "Numero2", erreur: e.toString ()});)) if (cb.state & &! didError) ( cb.state ((section: "Pour ajouter", value: obj)); / / 7)) Else if (identifiant == "résultat") (var element = Navigation.findChild ( "calculatrice", "résultat"); Navigation.findChild ( "simulateur", "resulterror"). InnerHTML = ""; var obj = new Object (); try (obj.Result = Converter.convertToInteger (element.innerHTML);) catch (e) (Navigation.findChild ( "simulateur", "resulterror"). innerHTML = e.toString (); if (cb . erreur) (cb.error ((section: «Résultat», item: "Résultat", erreur: e.toString ()});) return;) if (cb.state) (cb.state ((section: " "résultat, valeur: obj));)) else (if (cb.error) (cb.error ((section: identifiant, erreur:" Etat identifiant ( "+ identifiant +" n'existe pas "));))) Le code n'est pas compliqué, mais longue, parce que la tâche que vous devez accomplir est longue. La liste suivante explique chacune des lignes en gras de code. Les numéros de la liste correspondent aux numéros dans les commentaires affichés dans le code mis en évidence: 1. GetState rend une décision afin de déterminer où la représentation doit être converti en un État. 2. GetState réinitialise les messages d'erreur associée à la représentation. Dans cet article, cela signifie que l'attribution de la propriété innerHTML de la portée des éléments HTML individu à une mémoire tampon vide. Dans votre demande, que peut signifier la réinitialisation du texte clignotant ou modifier la police du texte. Il est important de réinitialiser l'état d'erreur de sorte qu'aucune de vieilles erreurs sont affichées que la validation est actuellement exécuté. 3. GetState instancie un objet en utilisant le type d'objet. L'instanciation et l'utilisation du type d'objet a un but. Vous pourriez être tenté d'instancier un type qui a prédéfini membres de données et méthodes, mais ce n'est pas conseillé. Imaginez que vous utilisez DHTML et en générant une forme dynamique. Il se pourrait que d'un contexte de la forme produite est un membre de données, et un autre contexte ne fait pas. Du point de vue état, vous souhaitez connaître l'état qui reflète le contexte, pas ce que vous pensez que le contexte devrait être. Ainsi, quand on instancie un objet qui n'a pas de membres de données et que vous assignez les membres de données de façon dynamique, vous êtes seulement de garantir que les données associées avec le contexte est présent. 4. Le didError variable est un indicateur qui indique si une erreur de validation a eu lieu. Ce drapeau est mis en évidence ici pour renvoi de la discussion précédente concernant la raison de l'utilisation de rappels et pas des boucles. L'illustration de didError montre que l'algorithme GetState a besoin pour suivre si une erreur s'est produite. 5. Converter convertit les données HTML dans le type demandé, qui dans le cas de l'exemple est une valeur entière. La conversion est un appel de fonction qui varie avec l'application en cours d'écriture. La conversion inclut une validation. Notez que la conversion est encapsulé dans un bloc d'exception. L'utilisation d'un bloc d'exception est privilégiée, car toutes les erreurs seront capturées. Les routines de validation peut manquer certaines erreurs, mais le bloc exception peut saisir et d'afficher ces erreurs. 6. Si une exception est générée, le bloc catch capture l'exception. Une fois que l'exception a été capturé, défini par l'utilisateur Erreur de rappel est appelée et peut traiter l'erreur plus loin. 7. Si aucune erreur sont générés, définis par l'utilisateur de rappel est appelée avec l'état du formulaire. Le code qui est non gras est soit une réplique de la fonctionnalité ou le code de soutien pour l'un des sept plus de détails. N'oubliez pas que le GetState et fonctionnalités SetState sont autonomes. Par exemple, quand une validation échoue et une erreur est généré, vous avez la possibilité de faire de l'affichage du message de rappel. Cependant, cette approche n'est pas souhaitable, parce que le code de l'État aurait à connaître les détails de représentation. Selon le modèle de représentation de morphing, il n'est pas souhaitable de disposer de l'appelant de GetState ou SetState savoir comment les représentations sont mises en œuvre. Cela favorise un découplage, tout comme le GetState et fonctions SetState ne savent pas l'origine des données utilisées pour attribuer un état dans une représentation. À titre d'exemple, le code suivant affiche la fonctionnalité complète SetState et des références croisées les détails qui mettent en œuvre les mêmes fonctionnalités que les sept détails définie de la fonction GetState: fonction SetState (identifiant, obj, cb) ( if (identifiant == "Pour ajouter") (/ / 1var form = document.getElementById ( "Calculator"); document.getElementById ( "Number1Error"). innerHTML = ""; / / 2document.getElementById ( "Number2Error"). innerHTML = ""; if (typeof (obj.Number1)! = "number") (/ / 5var tampon = "obj.Number1 prévu un certain nombre, mais c'est un" + typeof (obj.Number1); document.getElementById ( "Number1Error"). innerHTML = buffer; if (typeof (CB)! = "undefined" & & cb. error) ( (cb.error (section: "Pour ajouter", identifier: «numéro1», Erreur: buffer)); / / 6)))) = Element.innerHTML obj.Result;) else (if (typeof (CB)! = "Undefined" & & cb.error) (cb.error ((section: identifiant, erreur: "Etat identifiant (" + identifiant + "n'existe pas"));)) En confiant la représentation avec un État, le même type de logique est effectué, à l'exception des lignes 3 et 7 de la liste de code précédent. Ces chiffres ne sont pas référencés ici, parce que lors de l'assignation un État, vous avez réussi l'instance d'objet qui contient l'état. La validation côté serveur n'est pas affiché, car cet article se concentre sur les solutions client-côté. Pour compléter la solution, vous utiliseraient une requête AJAX et d'envoyer ou de recevoir l'État La validation côté serveur n'est pas affiché, car cet article se concentre sur les solutions client-côté. représentation illustre l'état dans un mode lecture seule. Utilisation de cet article, vous pouvez récupérer l'état à distance, l'afficher dans mode lecture-seule, le modifier, puis le renvoyer au serveur. Mettre tout ça ensemble, vous avez besoin de se souvenir des choses suivantes à propos de validation: • La validation n'est pas sur la validation de certaines données. Validation d'abord et avant tout, la définition d'un état qui est associé à une représentation. L'objet de la validation est de s'assurer que, lorsque l'Etat est transféré, l'état est cohérent. • Lors de la validation, si l'Etat est transféré vers le serveur, puis très probablement le client ne peut pas être invoqué. Le client est considéré comme peu sûr, et donc le plus vous devriez vous attendre est le système de validation au niveau qui élimine les erreurs "bêtes". Cela ne veut pas dire que vous ne pouvez pas effectuer de demande de validation en niveau tout juste ne mettez pas la foi aveugle dans la validation si la demande exige de haute sécurité. • Lorsque le client reçoit un état à partir du serveur, il n'a pas besoin d'être validé, car le serveur est considéré comme sûr. Métaphoriquement parlant, c'est comme aller à une banque: le caissier de banque n'a pas confiance en vous et estime par conséquent vous, l'individu, d'insécurité. L'inverse n'est pas vrai, comme vous le faites confiance aux guichets et ne sera pas question de ce que le narrateur dit ou si les sommes que vous recevez. • Lors de la validation des erreurs, vous utilisez DHTML pour afficher une erreur à proximité de l'endroit où elle s'est produite. Par exemple, ne génèrent pas une boîte de dialogue, car cela peut mener à des messages d'erreur cryptique. • Lors de la mise en œuvre de validation, utiliser get état et la fonctionnalité Etat a mis en sorte que l'État, la représentation, et les mécanismes utilisés pour transférer Etat ne peut être dissociée de l'autre. • Utilisez les blocs de code pour que les fonctionnalités utilisateur est appelé en cas de besoin, le découplage le code. un article présenté par Sonja Lande Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Validation des données" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||
| Online: 259 users browsing the articles directory |
|
|