javascript html history

javascript - El propósito original de<input type="hidden">?



window history clear (5)

Tengo curiosidad sobre el propósito original de la etiqueta <input type="hidden"> .

Hoy en día se usa a menudo junto con JavaScript para almacenar variables que se envían al servidor y cosas por el estilo.

Por lo tanto, el <input type="hidden"> existía antes de JavaScript, entonces ¿cuál era su propósito original? Solo puedo imaginar el envío de un valor desde el servidor al cliente, que (sin cambio) se envía de vuelta para mantener un tipo de estado. ¿O me sale algo mal en la historia del mismo y <input type="hidden"> siempre se suponía que debía usarse junto con JavaScript?

Si es posible, también brinde referencias en sus respuestas.


Solo puedo imaginar el envío de un valor desde el servidor al cliente, que (sin cambio) se envía de vuelta para mantener un tipo de estado.

Precisamente. De hecho, todavía se usa para este propósito porque el HTTP tal como lo conocemos hoy sigue siendo, al menos fundamentalmente, un protocolo sin estado.

Este caso de uso fue descrito por primera vez en HTML 3.2 (me sorprende que HTML 2.0 no incluyera tal descripción):

type=hidden
Estos campos no se deben representar y proporcionan un medio para que los servidores almacenen información de estado con un formulario. Esto se transmitirá al servidor cuando se envíe el formulario, utilizando el par nombre / valor definido por los atributos correspondientes. Esta es una solución para la apatridia de HTTP. Otro enfoque es usar HTTP "Cookies".

<input type=hidden name=customerid value="c2415-345-8563">

Si bien vale la pena mencionar que HTML 3.2 se convirtió en una Recomendación del W3C solo después del lanzamiento inicial de JavaScript, es seguro suponer que los campos ocultos casi siempre han servido para el mismo propósito.


En resumen, el objetivo original era crear un campo que se enviaría con el envío del formulario. A veces, era necesario almacenar cierta información en el campo oculto (por ejemplo, id del usuario) y enviarla con el envío del formulario.

Del HTML especificación del 22 de septiembre de 1995

Un elemento INPUT con `TYPE = HIDDEN ''representa un campo oculto. El usuario no interactúa con este campo; en cambio, el atributo VALOR especifica el valor del campo. Los atributos NAME y VALUE son obligatorios.


Los valores de los elementos del formulario, incluido type = ''hidden'', se envían al servidor cuando se publica el formulario. tipo de entrada = los valores "ocultos" no son visibles en la página. El mantenimiento de ID de usuario en campos ocultos, por ejemplo, es uno de los muchos usos.

SO usa un campo oculto para el clic de respuesta.

<input value="16293741" name="postId" type="hidden">

Usando este valor, la secuencia de comandos del lado del servidor puede almacenar el upvote.


Proporcionaré un ejemplo simple de Server Side Real World aquí, digamos si los registros están en bucle y cada registro tiene un formulario con un botón de eliminación y debe eliminar un registro específico, así que aquí viene el campo hidden en acción, de lo contrario, ganó ''t obtener la referencia del registro que se eliminará en este caso, será id

Por ejemplo

<?php if(isset($_POST[''delete_action''])) { mysqli_query($connection, "DELETE FROM table_name WHERE record_id = ".$_POST[''row_to_be_deleted'']); //Here is where hidden field value is used } while(condition) { ?> <span><?php echo ''Looped Record Name''; ?> <form method="post"> <input type="hidden" name="row_to_be_deleted" value="<?php echo $record_id; ?>" /> <input type="submit" name="delete_action" /> </form> <?php } ?>


básicamente los campos ocultos serán más útiles y las ventajas de usar con la forma de varios pasos. podemos usar campos ocultos para pasar información de un paso al siguiente paso utilizando ocultos y mantenerlo reenviando hasta el paso final.

  1. Fichas de CSRF.

La falsificación de solicitudes entre sitios ( http://en.wikipedia.org/wiki/Cro... ) es una vulnerabilidad de sitio web muy común. Requerir un token secreto específico del usuario en todos los envíos de formularios evitará los ataques de CSRF ya que los sitios de ataque no pueden adivinar cuál es el token correcto y cualquier envío de formularios que realicen en nombre del usuario siempre fallará.

  1. Guardar estado en formularios de varias páginas.

Si necesita almacenar qué paso en un formulario de varias páginas el usuario está actualmente en uso, use campos de entrada ocultos. El usuario no necesita ver esta información, así que ocúltela en un campo de entrada oculto.

Regla general: use el campo para almacenar cualquier cosa que el usuario no necesite ver, pero que desee enviar al servidor en el envío del formulario.