“Beach2018”怎么可能!是输入类型“电子邮件”的有效电子邮件地址?
Posted
技术标签:
【中文标题】“Beach2018”怎么可能!是输入类型“电子邮件”的有效电子邮件地址?【英文标题】:How could "Beach2018!" be a valid email address for input type "email"? 【发布时间】:2019-05-18 03:21:17 【问题描述】:我有一个包含这些字段的注册表单:
<input type="text" name="fullName" placeholder="Enter Your Name..." required="" id="firstname" class="personHead">
<input type="email" name="emailAddress" placeholder="Enter Your Email Address..." required="" id="email" class="envelope">
最近有人不小心在 fullName 字段中输入了她的电子邮件地址,在 emailAddress 字段中输入了一些垃圾信息(“Beach2018!”)。
由于 emailAddress 字段是type="email"
,我认为它的验证规则是this regex according to W3C,即supported in almost every browser。
demo fiddle here 显示“Beach2018!”是无效的。所以不知道是怎么提交成功的。
我有她的 userAgent 的记录,上面写着“ios 9.3.5”和“Mozilla/5.0”(以及其他一些可能不适合粘贴到此处的信息)。
如果没有正确处理type=email
验证,表单提交怎么能通过?
【问题讨论】:
【参考方案1】:我找到了一台运行 iOS 9.1 的旧 iPad 2 (Model A1395),并使用 Google Chrome(可能使用与 Safari 相同的引擎)测试了表单:
type=email
字段似乎没有验证。
附:当我打开 Safari 并用 Google 搜索“我的用户代理是什么”时,它显示的是 Safari/601.1。我不知道如何将其与https://www.caniuse.com/#search=email 中列出的 Safari 3-4 进行比较。
【讨论】:
我相信您之前已经听说过,但在后端验证数据也是一种很好的做法。前端验证对于更快、用户友好的消息很有用,而无需与服务器对话,但服务器不应该相信浏览器或任何前端会正确验证数据。总有办法规避它。我无法从您最初的问题中判断您是否已经在执行后端验证。 @cost 你是对的。我一直很懒,还没用过这个:laravel.com/docs/5.7/validation#rule-email以上是关于“Beach2018”怎么可能!是输入类型“电子邮件”的有效电子邮件地址?的主要内容,如果未能解决你的问题,请参考以下文章