Первоначальное назначение? [закрытый]


мне любопытно о первоначальном назначении <input type="hidden"> тег.

В настоящее время он часто используется вместе с JavaScript для хранения переменных в нем, которые отправляются на сервер и тому подобное.

таким образом, <input type="hidden"> существовал до JavaScript, так какова была его первоначальная цель? Я могу только представить себе отправку значения с сервера на клиент, который (без изменений) отправляется обратно для поддержания своего рода состояния. Или я что-то не так в истории он и <input type="hidden"> всегда должен был использоваться вместе с JavaScript?

Если возможно, пожалуйста, также дайте ссылки в ваших ответах.

5 96

5 ответов:

Я могу только представить себе отправку значения с сервера на клиент, который (без изменений) отправляется обратно для поддержания своего рода состояния.

точно. Фактически, он все еще используется для этой цели сегодня, потому что HTTP, как мы его знаем сегодня, все еще, по крайней мере, принципиально, является протоколом без гражданства.

этот вариант использования был фактически впервые описан в HTML 3.2 (Я удивлен, что HTML 2.0 не включил такое описание):

type=hidden
Эти поля не должны отображаться и предоставлять средства для серверов для хранения информации о состоянии с формой. Это будет передано обратно на сервер при отправке формы, используя пару имя / значение, определенную соответствующими атрибутами. Это работа вокруг безгражданства HTTP. Другой подход заключается в использовании HTTP "Cookies".

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

хотя стоит отметить, что HTML 3.2 стал только рекомендацией W3C после первоначальный выпуск JavaScript, можно с уверенностью предположить, что скрытые поля в значительной степени всегда служили одной и той же цели.

я приведу простой пример реального мира на стороне сервера здесь, скажем, если записи зациклены, и каждая запись имеет форму с кнопкой удаления, и вам нужно удалить конкретную запись, поэтому здесь идет hidden поле в действии, иначе вы не получите ссылку на запись, которая будет удалена в этом случае, это будет id

<?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
    }
?>

короче говоря, первоначальная цель состояла в том, чтобы сделать поле, которое будет отправлено с формой отправки. Иногда нужно было хранить некоторую информацию в скрытом поле (например, идентификатор пользователя) и отправлять ее с помощью формы submit.

из HTML 22 сентября 1995 спецификация

элемент ввода с 'TYPE=HIDDEN' представляет собой скрытое поле.Пользователь не взаимодействует с этим полем; вместо этого атрибут VALUE указывает значение параметра поле. Атрибуты NAME и VALUE являются требуемый.

значения элементов формы, включая type= 'hidden', отправляются на сервер при публикации формы. тип входного="скрытые" значения не отображаются на странице. Например, поддержание идентификаторов пользователей в скрытых полях является одним из многих применений.

SO использует скрытое поле для щелчка upvote.

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

используя это значение, сценарий на стороне сервера может хранить upvote.

в основном скрытые поля будут более полезны и преимущества для использования с многоступенчатой формой. мы можем использовать скрытые поля для передачи информации с одного шага на следующий шаг с помощью скрытых и сохранить его пересылку до конца шага.

  1. CSRF токены.

подделка межсайтового запроса - это очень распространенная уязвимость веб-сайта. Требование секретного, специфичного для пользователя токена во всех представлениях формы предотвратит атаки CSRF, так как сайты атак не могут угадать, что правильный токен есть, и любые представления формы, которые они выполняют от имени пользователя, всегда будут терпеть неудачу.

  1. сохранить состояние в многостраничных формах.

Если вам нужно сохранить, на каком шаге в многостраничной форме находится пользователь, используйте скрытые поля ввода. Пользователю не нужно видеть эту информацию, поэтому спрячьте его в скрытое поле ввода.

общие правила: Используйте поле для хранения всего, что пользователю не нужно видеть, но что вы хотите отправить сервер при отправке формы.