У меня есть страница участия в конкурсе на сайте моей компании. Чтобы принять участие в конкурсе, вы создаете логин, который представляет собой только адрес электронной почты и 4-значный PIN-код. Вот поле для PIN-кода:
<input type="password" name="contest_pin" id="contest_pin" maxlength="4" />
Когда пользователи отправляют форму, учетная запись создается в нашей базе данных, а затем они получают электронное письмо (которое я скопировал), содержащее адрес электронной почты и созданный ими PIN-код.
Вот проблема: в каждом браузере, который я тестировал (Safari/Chrome/Firefox на Mac, Chrome/Firefox на Linux, IE7/8/9 на Windows), я НЕ МОГУ ввести более 4 цифр в это поле PIN. И тем не менее, несколько писем, которые я получил, показывают, что пользователь создал булавку с более чем 4 символами.
Как это возможно? Существуют ли браузеры, которые не поддерживают maxlength? Я не проверял в Opera или в любом из мобильных браузеров. Ничего страшного, если их пин-код длиннее 4 цифр; база данных примет больше. Мне просто интересно, как им удалось обойти maxlength.
ОТРЕДАКТИРОВАНО ДЛЯ ДОБАВЛЕНИЯ
Слишком много ответов, в основном говорящих об одном и том же, чтобы я мог ответить на каждый из них индивидуально. Я ЗНАЮ, что я всегда должен выполнять проверку на стороне сервера для чего-либо важного, и у нас действительно есть код PHP, очищающий наши данные, и если бы это было чрезвычайно важно, у меня также был бы код PHP, обеспечивающий ограничение в 4 цифры. Для нас не так уж важно, чтобы они состояли всего из 4 символов, поэтому я не стал заставлять это делать. Мне просто интересно, почему свойство maxlength не делает то, для чего оно предназначено, то есть не позволяет пользователям вводить больше определенного количества символов. Для тех из вас, кто предложил вредоносные скрипты или Firebug, я могу быть на 100% уверен, что это не так. Только зарегистрированные пользователи нашего сайта (который ограничен очень конкретным списком корпоративного членства) могут даже попасть на страницу участия в конкурсе, и я могу гарантировать, что ни один из примерно 100 человек в этом списке не будет преднамеренно пытаться обойти свойство типа ввода.
max
иmin
илиrange
дляtype=number
. - person Clint Pachl   schedule 01.07.2015maxlength
), где для удобства мне нужна максимальная длина. Например, для одного конкретного поля базы данных установлена максимальная длина 100 (т. е. изменение символов (100)). Таким образом,maxlength=100
устанавливается для элемента ввода. Однако иногда элемент ввода пропускает 103 или 101 символов, и серверная часть выдает исключение. Это раздражение. Я хотел бы знать, почему длина ввода иногда может превышать максимальную длину на несколько дополнительных символов; похоже на ошибку. - person Clint Pachl   schedule 01.07.2015maxlength
в бэкэнде базы данных. атрибут maxlength указывает максимальное количество символов (в кодовых точках Unicode). Так, например, если была введена одна двухбайтовая кодовая точка Unicode, такая как знак умножения (×), она будет считаться 1 в отношении максимальной длины ввода, но 2 в отношении длины символа базы данных ( при условии кодировки SQL_ASCII). - person Clint Pachl   schedule 01.07.2015