Обрабатывает ли Chrome пустые поля формы, отличные от других браузеров? - PullRequest
2 голосов
/ 25 февраля 2011

Согласно моему PHP-сценарию, Google Chrome отправляет пустое (например, не value="") поле ввода с формой сообщения. Это отражено в $_POST суперглобальном в PHP. Однако другие браузеры не демонстрируют такого же поведения.

Кроме того, рассматриваемый <input> находится внутри <div style="display: none;"/> (дословно в коде). Похоже, что другие браузеры не отправляют это вместе.

Как / где я могу найти документацию или подтверждение того, что Chrome обрабатывает это по-другому?

Обновление

Оказывается, к div применен стиль CSS, который применяется visibility: hidden; - Я не уверен, что это изменит ответы ниже или нет.

См. Здесь фактический код:

Из обработчика формы:

    $check = stripslashes($form['E-mail']);
     if (!empty($check)) {
        $problem = false; 
        $errors[] = '0|wrong spamcheck code!';
        }

Из формы:

  <td><div style="visibility:hidden; display:none"> <input type="text" name="E-mail" ></div></td>

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Я нашел решение - оказывается, что в Chrome он заполняет это поле формы вашим автозаполненным адресом электронной почты. A var-dump из результатов представления формы подтверждено.

Большое спасибо тем, кто это изучил - это привело меня к пути к решению. Голосует за всех!

1 голос
/ 25 февраля 2011

Я могу подтвердить, что и Firefox и Safari демонстрируют такое же поведение.

<?php
    var_dump($_POST);
?>
<form method="post">
    <input type="hidden" name="hiddenField" />
    <input type="submit" />
</form>

Результаты этого:

array(1) {
  ["hiddenField"]=>
  string(0) ""
}

Также протестировано внутри скрытого div, и с value="" результат был таким же. Следует также отметить, что я не думаю, что закрытие div с /> на самом деле разрешено в соответствии со стандартами, для меня это кажется плохой практикой независимо (поскольку вы утверждаете, что это дословно).

Редактировать: Из моего собственного любопытства я также попробовал его без type="hidden" (атрибут type полностью удален, простой <div style="display:none"><input name="hiddenField" /></div>) и помещением его в div с display: none. Результаты остались неизменными в Firefox и Safari.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...