Convalida dei datiA causa di un errore umano, l'incomprensione umana, o per semplice ignoranza, la gente a volte lo stato di input non corretto. Ogni domanda deve applicare la convalida dei dati in modo da poter sapere se i dati è uno stato valido. Problema di convalida non è solo un problema di inserimento dati può essere anche un problema di programmatore. Ad esempio, un essere umano possa inserire i dati correttamente, ma il codice può eseguire alcune operazioni non validi con conseguente corruzione dello stato. È necessario garantire che la convalida si verifica con successo. Convalida Theory in un'applicazione Ajax significa che il client o server in grado di convalidare i dati. La convalida per verificare se un numero valido è stato inserito può essere eseguita su entrambi i lato client e lato server . Immaginare la convalida viene eseguita sul lato client, è possibile definire i seguenti punti: • Si utilizza JavaScript per attuare tutte le convalida. • Il cliente può agire e convalidare prima di presentare i dati al server, risparmiando così un viaggio di andata e ritorno al server. • Il client Web è considerato insicuro, in modo che il server possa ricevere i dati non validi se la validazione lato client è la convalida solo. Validazione lato client consente di risparmiare potenza di elaborazione sul lato server facendo la convalida e utilizzando le risorse del cliente. Il lato negativo è che in un'applicazione HTML, il cliente è considerato insicuro, e gli hacker possono sempre aggirare gli sforzi sicurezza di sviluppatori AWeb. È possibile ridurre al minimo i problemi, ma non è possibile eliminare i problemi. Al contrario, diamo un'occhiata a convalida sul lato server , dove è possibile definire i seguenti punti:
• Si può implementare tutte convalida nella lingua scelta, se questo è Java, C #, C + +, PHP o Ruby. • convalida sul lato server richiede un andata e ritorno tra il client e il server, che spreca le risorse di rete. Nella fonte, ad esempio, l'img tag HTML è un attributo src, ma anche un obiettivo e un attributo onload. Da un punto di vista a livello di sistema, questo significa che ci sono tre attributi. Il problema con il filtro server è che esso considera il target e gli attributi onload come un attributo. Ciò si verifica probabilmente perché una domanda di convalida a livello di filtro è stato creato che non verifica i dati a livello di sistema. Avuto la routine di convalida effettuata, sia un sistema di convalida, a livello e di una domanda di convalida, a livello, l'errore più probabile sarebbe stato catturato. Stato e la convalida non sono un problema semplice. Stato e la convalida coinvolgere sia un lato client e lato server, e di coinvolgere sia a livello di sistema di convalida e di applicazione convalida a livello. Nell'architettura proposta di convalida, un problema rimane: Il cliente è considerato insicuro, ma il server si aspetta che il client inviare i dati a destra. Questo potrebbe essere un articolo per il disastro, ma non a causa del modo di convalida applicazione è implementata. Con la maggior parte delle implementazioni tecniche, comporta l'applicazione di convalida convalida a livello di sistema. Correzioni client di backup dei dati in modo che gli errori sono già stato rimosso. Il lato server si presuppone che i dati sono corretti, ma ha ancora la capacità di catturare gli errori, se si verificano. Soluzione Per iniziare, diamo un'occhiata alla pagina HTML utilizzato per aggiungere due numeri insieme. Fonte: / website / ROOT / articles AJAX / DHTML / validazione / test.html Fonte: / website / ROOT / articles AJAX / DHTML / validazione / test.html • Durante l'estrazione di Stato per i numeri, si deve fare riferimento alla proprietà di una casella di testo per un valore number1 e number2. • Durante l'estrazione di Stato per il risultato, è necessario fare riferimento l'intervallo di proprietà innerHTML. • È necessario convalidare la casella di testo valori number1 e number2 come numeri di essere. • Se la convalida non riesce, è necessario generare e visualizzare un errore così gli utenti possono adottare misure correttive. • Non è necessario visualizzare gli errori in modo frammentario. Le routine di convalida deve passare attraverso l'intero stato e generare errori per tutto ciò che trova. • Quando non si verificano più errori di convalida, passa allo stato generato al chiamante. Si noti che le istanze multiple dello Stato si potrebbero verificare. Si dovrebbe notare che la generazione di errori più o istanze multiple dello Stato. Ogni volta che un algoritmo è di fronte a più risultati, i risultati vengono memorizzati temporaneamente in una matrice che viene elaborato dal chiamante dell'algoritmo. Come indicato nell'articolo 2, ai sensi dell'articolo blocco di codice, è possibile utilizzare anche i blocchi di codice. I blocchi di codice potrebbe essere la scelta appropriata, perché non possono o non possono essere errori, e non può o non può essere una istanza di Stato. Per illustrare la complessità, si consideri il seguente codice, che illustra ogni approccio di chiamare la funzione GetState: GenerateState function () (var noErrors = true; var result = GetState ( "identificativo"); c1 for (int i = 0; c1 <result.errors.length; c1 + +) (/ / Fai qualcosa con noErrors errore = false; ) if (noErrors == true) (for (int c1 = 0; c1 <results.state.length; c1 + +) (/ / Fai qualcosa con i risultati))) La prima linea è la cessione del noErrors variabile. Il noErrors variabile è utilizzato per indicare se gli errori si verificano quando l'estrazione dello Stato. Se ci sono errori, poi la trasformazione dello Stato sarebbe sciocco poiché non vi è stato o se c'è, è incompleto. Chiamando la funzione GetState restituisce un'istanza di un oggetto, che ha due componenti di dati: gli errori e lo stato. I due membri sono array di dati che contengono gli errori e le istanze stato generato. Dopo la chiamata a GetState, un ciclo si ripete gli errori di convalida e, se necessario, genera una risposta. Se viene generato un errore, il noErrors variabile viene assegnato un valore di falso, che indica un errore. Se non ci sono errori, le istanze sono stato generato iterata. GetState Come è codificato, si chiama la funzione e lo stato dei processi. Se si verifica un errore, poi il chiamante di GetState ha bisogno di sezionare cosa è andato storto e come per indicare gli errori al chiamante. Un'altra soluzione è quella di utilizzare i blocchi di codice che semplificano come lo Stato o gli errori vengono elaborati. I blocchi di codice semplificare il codice, perché consentono di concentrarsi sul valore aggiunto rispetto al codice. Il codice seguente illustra come una versione di GetState utilizza blocchi di codice: GenerateState function () (GetState ( "Identifier", (errore: function (errorItem) (/ / Fai qualcosa con l'errore) Stato: function (stateInstance) (/ / Fai qualcosa con i risultati)));) Per l'attuazione della modifica GenerateState, la funzione GetState è passata un'istanza di un oggetto che ha due metodi: errore e stato. Ogni volta che si verifica un errore, l'errore viene chiamata la funzione. Se non si verificano errori, allora lo Stato viene chiamata la funzione. Il chiamante di GenerateState dispone di una implementazione semplificata, perché ha bisogno solo di prendersi cura dei casi in cui un errore o di una istanza di Stato si verificano. Se il chiamante non fornisce una implementazione per la funzione di errore, quindi gli eventuali errori che si verificano sono ignorati, e il chiamante attende solo per un esempio valido di Stato. I dettagli di SetState e come usarlo sono simili a GetState. La differenza con SetState è che uno stato viene assegnato ad una rappresentazione. Ora guardiamo i dettagli di implementazione del modulo HTML di nuovo, come un ulteriore cambiamento non è stato ancora discusso, e deve essere coperto prima di discutere i dettagli del GetState o SetState: Il testo in grassetto mostra l'aggiunta di elementi span HTML, che si utilizza per visualizzare eventuali errori associati ai dati. Nelle applicazioni passato, si potrebbe avere utilizzato una finestra di dialogo per indicare gli errori. Il problema con le finestre di dialogo è che si parla dei dati problematici, ma non individuare esso. Con una forma piuttosto complessa, gli utenti potrebbero essere lasciato chiedersi se l'errore viene. Dynamic HTML (DHTML), ti dà la possibilità di modificare gli elementi HTML, rendendo così la necessità di utilizzare una finestra di dialogo inutile. Questo articolo utilizza un elemento span HTML che contiene l'errore. Si può usare quello che vuoi nelle vostre applicazioni. Forse si desidera utilizzare testo lampeggiante, o forse si desidera cambiare i caratteri è la vostra scelta. È importante, però, che si associa l'errore con l'elemento HTML locale. Ora coprire i dettagli della GetState, che può essere un po 'lungo: funzione GetState (identificativo, cb) ( if (identificativo == "Per aggiungere") (/ / 1var form = document.getElementById ( "mutui"); 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 (sezione: "Per aggiungere", Articolo: "Numero 1", errore: e.toString ()}); / / 6)) Try (obj.Number2 = Converter.convertToInteger (form.Number2.value);) catch (e) (didError = true; document.getElementById ( "Number2Error"). InnerHTML = e.toString (); if (cb. ) (errore cb.error ((sezione: "Per aggiungere", voce: "Numero 2", di errore: e.toString ()});)) if (cb.state & &! didError) ( cb.state ((sezione: "Per aggiungere", value: obj)); / / 7)) Else if (ID == "risultato") (var element = Navigation.findChild ( "mutui", "risultato"); Navigation.findChild ( "mutui", "resulterror"). InnerHTML = ""; var obj = new Object (); try (obj.Result = Converter.convertToInteger (element.innerHTML);) catch (e) (Navigation.findChild ( "mutui", "resulterror"). innerHTML = e.toString (); if (CB . errore) (cb.error ((sezione: "Result", voce: "Result", errore: e.toString ()});) return;) if (cb.state) (cb.state ((sezione: " "Pertanto, il valore: obj));)) else (if (cb.error) (cb.error ((sezione: identificativo, errore:" identificatore di Stato ( "+ identificativo +" non esiste "));))) Il codice non è complicato, ma lungo, perché il compito è necessario compiere è lungo. L'elenco che segue spiega ciascuna delle linee di codice in grassetto. I numeri nella lista corrispondono ai numeri nei commenti visualizzata in codice evidenziato: 1. GetState prende una decisione per stabilire che la rappresentanza deve essere convertito in uno stato. 2. GetState azzera i messaggi di errore associato con la rappresentazione. In questo articolo, che significa assegnare la proprietà innerHTML dei singoli elementi span HTML a un buffer vuoto. Nella tua domanda, che potrebbe significare il ripristino del testo lampeggiante o cambiare il carattere del testo. E 'importante per ripristinare lo stato di errore in modo che non vecchi errori vengono visualizzati come la convalida viene eseguita. 3. GetState istanzia un oggetto utilizzando il tipo di oggetto. L'esemplificazione e l'uso del tipo di oggetto ha uno scopo. Si potrebbe essere tentati di creare un'istanza di un tipo che ha predefiniti membri di dati e metodi, ma che non è consigliato. Immagina di utilizzare il DHTML e generando una forma dinamica. Potrebbe essere che un contesto del modulo generato è un membro di dati, e un altro contesto non. Dal punto di vista dello Stato, si desidera conoscere lo stato che riflette il contesto, non ciò che si ritiene che il contesto dovrebbe essere. Così, quando si istanzia un oggetto che non ha componenti di dati e di assegnare i membri di dati in modo dinamico, che stai solo assicurando che i dati associati con il contesto è presente. 4. Il didError variabile è un flag che indica se un errore di convalida si è verificato. Questa bandiera è evidenziato qui per riferimento incrociato la discussione precedente per quanto riguarda il motivo di usare callback e non loop. L'illustrazione degli spettacoli didError che l'algoritmo GetState ha bisogno di controllare se è verificato un errore. 5. Convertitore converte i dati HTML nel tipo di richiesta, che nel caso di esempio è un valore intero. La conversione è una chiamata di funzione che varia con l'applicazione è scritta. La conversione comprende una convalida. Si noti che la conversione è incapsulato all'interno di un blocco di eccezioni. L'uso di un blocco di eccezioni è preferibile, in quanto tutti gli errori saranno catturati. Le routine di convalida potrebbe perdere alcuni errori, ma il blocco di eccezioni in grado di catturare e visualizzare tali errori. 6. Se viene generata un'eccezione, il blocco catch cattura l'eccezione. Una volta che l'eccezione è stato catturato, l'utente-definito di callback di errore viene chiamato e in grado di elaborare l'ulteriore errore. 7. Se non vengono generati errori, l'utente-definito di callback viene chiamata con lo stato di forma. Il codice che non è in grassetto o è una replica della funzionalità o il codice di sostegno per uno dei sette maggiori dettagli. Ricordate che il GetState e le funzionalità SetState sono self-contained. Ad esempio, quando una convalida non riesce e viene generato un errore, si ha la possibilità di rendere il display callback il messaggio. Tuttavia, questo approccio non è auspicabile, perché il codice dello Stato avrebbe dovuto conoscere i particolari di rappresentanza. Come per il modello di rappresentanza Morphing, non è auspicabile che la chiamante di GetState o SetState sapere come le rappresentazioni vengono attuate. Questo favorisce un disaccoppiamento, così come il GetState e le funzioni SetState non conoscere l'origine dei dati utilizzati per assegnare uno Stato in una rappresentazione. Per scopi illustrativi, il codice seguente mostra le funzionalità SetState completo e riferimenti incrociati i dati che implementano la stessa funzionalità come i sette dettagli definiti della funzione GetState: funzione SetState (identificativo, obj, cb) ( if (identificativo == "Per aggiungere") (/ / 1var form = document.getElementById ( "mutui"); document.getElementById ( "Number1Error"). innerHTML = ""; / / 2document.getElementById ( "Number2Error"). innerHTML = ""; if (typeof (obj.Number1)! = "number") (/ / 5var buffer = "obj.Number1 previsto un numero, ma è un" + typeof (obj.Number1); document.getElementById ( "Number1Error"). innerHTML = buffer; if (typeof (CB)! = "undefined" & & cb. errore) ( (cb.error (sezione: "Per aggiungere", identificativo: "Numero 1", Errore: buffer)); / / 6)))) Element.innerHTML = obj.Result;) else (if (typeof (CB)! = "Undefined" & & cb.error) (cb.error ((sezione: identificativo, errore: "identificatore di Stato (" + identificativo + "non esiste"));)) Quando si assegna la rappresentazione con uno stato, lo stesso tipo di logica è effettuata, con l'eccezione delle linee 3 e 7 del codice precedente. Questi numeri non sono presenti riferimenti qui, perché quando l'assegnazione di uno stato, sei passato l'istanza di oggetto che contiene lo stato. La convalida sul lato server non viene mostrato, perché questo articolo si concentra su soluzioni client-side. Per completare la soluzione, si sarebbe utilizzare una richiesta Ajax e inviare o ricevere lo stato La convalida sul lato server non viene mostrato, perché questo articolo si concentra su soluzioni client-side. rappresentazione descrive lo stato in una modalità di sola lettura. L'utilizzo di questo articolo, si potrebbe recuperare lo stato in remoto, visualizzare in modalità di sola lettura, modifica, e quindi inviarlo al server. Mettere tutto questo insieme, è necessario ricordare le seguenti cose sulla convalida: • la convalida non è sulla convalida dei dati. Convalida prima di tutto è di circa la definizione di uno Stato che è associato ad una rappresentazione. Ai fini della convalida è di garantire che, quando è stato trasferito, lo stato è coerente. • Quando si esegue la convalida, se lo stato è trasferito al server, quindi molto probabilmente il client non può essere invocato. Il cliente è considerato insicuro, e quindi la maggior parte si dovrebbe aspettare è il sistema di convalida, a livello che rimuove gli errori del "muto". Questo non vuol dire che non è possibile eseguire l'applicazione convalida, a livello non solo mettere una fede cieca nella validazione se l'applicazione richiede una sicurezza elevata. • Quando il client riceve uno stato dal server, esso non ha bisogno di essere convalidato, perché il server è considerato sicuro. Metaforicamente parlando, è come andare a una banca: il cassiere di banca non si fida di te, e ritiene quindi che, l'individuo, insicuro. L'inverso non è vero, come si fa la cassiera di fiducia e non interrogarsi su quello che dice il cassiere o il denaro che si riceve. • Quando la convalida degli errori, si utilizza DHTML per visualizzare un errore nei pressi del luogo in cui si è verificato. Per esempio, non generano una finestra di dialogo, perché ciò può portare a messaggi di errore criptico. • In caso di applicazione di convalida, l'uso Get stato e la funzionalità dello stato fissato in modo che lo Stato, la rappresentanza, e dei meccanismi utilizzati per il trasferimento dello Stato può essere disaccoppiato gli uni dagli altri. • Utilizzare i blocchi di codice in modo che le funzionalità utente viene chiamato quando necessario, il disaccoppiamento del codice. un articolo presentato da Sonja Lande Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni. Importante: Questo articolo "Convalida dati" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.
|
|||||
| Online: 175 users browsing the articles directory |
|
|