• JS 验证 form 表单就是个坑啊

    2016/09/17 冷雨轩 19 评论  , 

关于验证form表单数据的合法性,我相信很多人和我一样,直接几行js语句往那一丢就行,可是这也太不安全了吧,稍微懂点js的把规则一改,什么样的数据都敢往你后台提交,如果在后台再次验证,工作量翻倍不说,js验证表单的意义何在???求解疑!!!或者说你们是怎么做的啊?求分享经验!!!

1 收藏


直接登录
最新评论
  • 冷雨轩 java web 2016/09/17

    木有人吗…………………..

    • mindong.ji 软剑公橙狮 2016/09/17 精华评论

      首先加前端 js 验证主要是为了方便用户操作,增强用户体验。前端验证是不能保证用户输入是否合法的。(如浏览器不支持js功能,或是浏览器js功能已经关闭掉,或通过其他工具直接post你的表单等等,真想绕过前端验证不要太容易)

      如有个注册页面,要求输入用户名(不能使用已被注册的用户名),邮箱等。

      1.在加有前端验证的情况下:

      用户在输入表单信息的过程中,就能向用户提示用户名是否有效,邮箱格式是否正确等,并要求用户更正。并在所有验证通过后方可提交表单,这样基本上能保证用户一次性就能把表单提交成功了。

       

      2.在只有后端验证的情况下:

      用户只有在提交表单后才能发现哪些输入项有误,并修改后重新提交。但是这个时候用户也不知道他修改的信息是不是合法的(好吧,我重新提交后就知道了)。发现问题没有,没有前面验证的情况下用户可能需要N次修改提交才能最终成功提交表单,是不是增加用户跑路的概率(我擦什么破网站,老子注册了半天都没成功,我跑)

       

      总结:

      后端验证是必需的,只有后端验证才能保证表单数据输入的合法性
      前端验证的主要目的是为了方便用户,增强用户体验。虽然不是必需的,但目前对于大部分网站来说已经算是标配,不加确实比较low。特别是面向普通用户的网站,没有加前端验证可能会加大用户注册跑路率。(除非是自己使用的内部系统等,那是可以看心情)
      目前主流的Web框架已经集成了前后端验证功能,如:Asp.net mvc,PHP 的Yii 等,只要定好验证规则,前端验证代码就自动生成好,后端验证也很方便。
      前端验证代码除非特殊情况或以学习练习为目的,就不要再自己一个个写了(如 if(email.value==””){ ….//弹出提示 } 这种,看起来很low的波),真正工作时使用 jquery.validate.js + jquery.validate.unobtrusive.js(可选,但我很喜欢) 插件才能体会到前端验证的酸爽。

    • 现在前端用angularjs写了,验证也封装的高大上些了

  • DOLLOR   2016/09/18

    如果你的前后端都是用JS写的,就可以很轻松地共享代码了。

  • 阳光下的大猫 项目经理 2016/09/19

    主要是过滤一次比较easy的错误,不要什么东西都抛到服务端验证,其次现在服务端验证,这样的体验是也好一些的,本地验证毕竟还是很方便的。

  • 熊绎 IT solution 2016/09/21

    你把坑都填满了就成了大神,真的

  • 七叔抱抱 民工 2016/09/21

    居然想只前端验证不服务器端验证….

  • 就这样吧0o web前端+php=全栈? 2016/09/24

    验证:后端为主,前端为辅

  • 龙雀 野生程序员 2016/09/24

    防止往后端发送大量的垃圾请求,服务器能轻松点呗。

  • 稳稳的_幸福 IT高级工程师 2016/09/25

    各自遇到的情况不一样吧

  • nil .net开发 2016/09/26

    前端的验证只是为了用户体验,后端才是真正去验证数据有效性的,总不能用户每次的输入都去后端去验证的,浪费http请求不说,体验也差。

    我的做法是,前端只做简单的验证(毕竟如果做复杂了,就出现你说的问题了,验证写两套,改起来也麻烦,最重要的是也可能会暴露商业逻辑,数据结构什么的。),后端做具体的商业逻辑。

  • 前端验证主要为了用户体验吧,后端还是要验证的

  • SJ君 求职 2016/09/28

    要知道JavaScript是为什么诞生的:

    当时表单要发送到服务器端才能验证用户有没有填必填域。

    而JavaScript主要目的是处理以前由服务器端语言负责的一些输入验证操作。

    如必填域这种的简单验证。

    但也只是“一些输入验证操作”并不是全部,服务器端的验证始终是不可少的。

  • rhythm 前端工程师 2016/09/28

    前后端都写,前端过滤掉一部分数据,后端真正做安全相关的,可以减少后端处理量。