Domanda

Ho sempre visto un sacco di campi nascosti utilizzati in applicazioni web. Ho lavorato con il codice che è scritto di usare un sacco di campi nascosti ed i valori dei dati provenienti dai campi visibili inviati avanti e indietro per loro. Anche se non riesco a capire il motivo per cui i campi nascosti vengono utilizzati. Posso quasi sempre pensare a modi per risolvere lo stesso problema senza l'uso di campi nascosti. Come campi nascosti aiuto nella progettazione?

Qualcuno può dirmi che cosa è esattamente il vantaggio che forniscono campi nascosti? Perché i campi sono nascosti utilizzati?

È stato utile?

Soluzione

campi nascosti è solo il modo più semplice, che è il motivo per cui essi sono utilizzati un po '.

Alternative:

  • la memorizzazione dei dati in un server-side session (con il biscotto sessionid)
  • la memorizzazione dei dati in un server-side di transazione (con transazione id come il campo nascosto singolo)
  • utilizzando sentiero URL invece di parametri nascosti di query sul campo ove applicabile

Le principali preoccupazioni:

  • il valore del campo nascosto non può essere attendibile per non essere manomesso da una pagina all'altra (al contrario di memoria del server-side)
  • grandi esigenze di dati per essere pubblicato ogni volta, potrebbe essere un problema, e non è possibile che alcuni dati (ad esempio le immagini caricate)

I principali vantaggi:

  • sessioni appiccicoso che fuoriuscita tra le pagine e più finestre del browser
  • senza pulitura lato server necessari (per i dati scaduto)
  • accessibili a script client-side

Altri suggerimenti

Si supponga di voler modificare un oggetto. Ora è utile per mettere l'ID in un campo nascosto. Naturalmente, è necessario mai fare affidamento su quel valore (vale a dire fare in modo che l'utente non ha diritti su insert / update).

Ancora, questa è una soluzione molto conveniente. Mostrando l'ID in un campo visibile (ad esempio sola lettura casella di testo) è possibile, ma irritante per l'utente.

Memorizzazione l'ID in una sessione / cookie è proibitivo, perché non consente più finestre di modifica aperte ai limiti di durata nello stesso tempo e impone (sessione porta timeout per un'operazione di modifica rotto, molto fastidioso).

Utilizzando l'URL è possibile, ma le regole le pause di progettazione, vale a dire l'uso POST quando si modificano i dati. Inoltre, dal momento che è visibile all'utente che crea più brutti degli URL.

La maggior parte uso tipico vedo / uso è per ID e le altre cose che in realtà non hanno bisogno di essere sulla pagina per qualsiasi altra ragione che la sua necessaria ad un certo punto da inviare al server.

-edit, dovrebbe aver compreso più in dettaglio -

Dire per esempio che avete un oggetto che si desidera aggiornare - l'interfaccia utente restituisce un insieme di valori e il server a quel punto può o non può sapere "hey questo è un oggetto cliente" in modo da sparare fuori una richiesta di il server e dire "Hey, dammi ID 7" e ora avete il vostro oggetto del cliente come il sistema lo sa. Gli aggiornamenti vengono applicati, convalidati, qualsiasi altra cosa e ora l'interfaccia utente ottiene il risultato completato.

Credo che una buona scusa / argomento sta usando LINQ. Provare ad aggiornare un oggetto in LINQ senza ottenere dal DB prima. Non ha alcuna idea reale che si tratta di qualcosa che può tenere traccia di fino ad ottenere l'oggetto completo.

Ecco una delle ragioni, conveniente modo di passaggio di dati tra il codice del client (javascript) e lato server.

Ci sono molti scenari utili.

Una è quella di "store" alcuni dati su una pagina che non deve essere inseriti da un utente. Ad esempio, memorizzare l'ID utente quando generare una pagina, allora questo valore sarà automaticamente inoltrato con il modulo al server.

Un altro scenario è la sicurezza. Aggiungete un po 'nascosta token per la pagina e controllare la sua esistenza sul server. Questo aiuto identificherà se un modulo è stato inviato tramite il browser o da qualche bot che ha appena pubblicato un certo URL sul tuo sito.

Si mantiene le cose fuori del URL (come nel querystring) in modo che mantiene pulito. Mantiene anche le cose fuori di sessione che potrebbero non necessariamente essere lì.

Oltre a questo, non riesco a pensare di troppi altri benefici.

Essi sono generalmente utilizzati per stato di negozio come un'interazione progressi. I cookie possono essere utilizzati al posto, ma alcune persone li disattivano. Potrebbe anche utilizzare un unico campo nascosto a punto allo stato lato server, ma poi ci sono problemi di sessione colloso.

Se si utilizza campo nascosto nella forma, si stanno aumentando il peso della forma, includendo un nuovo controllo.

Se non v'è alcuna necessità di prendere campo nascosto, si should't prende perché non è adatto sulle basi del punto di sicurezza. utilizzando il campo nascosto non rientrano nella programmazione buona. Perché anche influenzare le prestazioni di applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top