我在我公司的网站上有一个比赛输入页面。为了参加比赛,您创建了一个登录名,它只是一封电子邮件和一个4位数字的密码。这里的PIN字段:是否有浏览器不支持maxlength?
<input type="password" name="contest_pin" id="contest_pin" maxlength="4" />
当用户提交表单,在我们的数据库中创建帐户,然后他们收到一封电子邮件(这我就复制),包含他们创建的电子邮件地址和密码。
以下是我测试过的每个浏览器(Mac上的Safari/Chrome/Firefox,Linux上的Chrome/Firefox,Windows上的IE7/8/9)我无法在该PIN字段中输入超过4位数字。然而,我收到的几封电子邮件显示,该用户创建了超过4个字符的密码。
这怎么可能?是否有浏览器不支持maxlength?我还没有在Opera或任何移动浏览器上进行过测试。如果它们的引脚长度超过4位,这不是什么大问题;数据库将接受更多。我只是想知道他们如何设法达到最大长度。
编辑补充
有太多的答案基本上是说,我单独给所有的人都回应同样的事情。我知道我应该总是对任何重要的服务器端进行验证,并且我们确实有PHP代码来清理数据,如果这非常重要,我还会让PHP代码执行4位数限制。对我们来说它们只有4个字符并不重要,所以我没有强制执行它。我只是想知道为什么maxlength属性没有做它设计的目的,这是为了防止用户输入超过一定数量的字符。对于那些建议使用恶意脚本或Firebug的人,我可以100%确定情况并非如此。只有我们网站的注册用户(仅限于特定的公司会员名单)才能进入参赛作品页面,我可以保证该名单上大约100人不会故意试图绕过输入类型属性。
我在这里得到的问题完全一样,我知道最大长度很容易规避,但是那些没有试图克服障碍的用户呢?我能想到的唯一事情就是Chris所说的,那就是在某些浏览器上复制粘贴它时不起作用。只有一个例子是IE浏览器,如果你在文本区域拥有maxlength属性,那么你可以粘贴超过最大长度的文本..这是不是与输入情况..但也许在其他浏览器..我不知道为什么人们会粘在别针中。让我知道,如果你弄清楚它是如何发生的。 – Trevor 2014-02-26 23:42:01
当你添加type =“number”属性时,maxlength =“x”在MAC上无法工作(chrome&firefox试过):) – 2014-12-12 08:06:40
@MindaugasBernatavičius,那是因为你需要使用'max'和'min'或'range 'type = number'的属性。 – 2015-06-30 23:30:21