Layui前台表单校验用户名,验证用户名合法性(转发官方文档说明)

 发现bug:

手上有一个网站使用的是Layui框架,上线运营之后,发现有人注册了一个“ QQ556677<script>http://域名.com/Jzpu</script>” 的账号,很明显是有人要注入木马后门,会出现这种问题很可能就是注册时没有验证用户名的合法性,因此看了一个layul的官方表单验证文档,官方的form.verify写得还是相当不错的,一起来学习吧!

1、导入相应的layui.css和layui.js的包,在js中申明form

<script type="text/javascript">
    layui.use(['form'], function(){
        var form = layui.form;
    }
</script>

2、需要验证的input,就加上lay-verify="规则名称"

<input type="text" lay-verify="email"> 
 
还同时支持多条规则的验证,如下:
<input type="text" lay-verify="required|phone|number">
属性名属性值说明
lay-verifyrequired(必填项)
phone(手机号)
email(邮箱)
url(网址)
number(数字)
date(日期)
identity(身份证)
自定义值
同时支持多条规则的验证,格式:lay-verify="验证A|验证B" 
如:lay-verify="required|phone|number" 

另外,除了我们内置的校验规则,你还可以给他设定任意的值,比如lay-verify="pass",那么你就需要借助form.verify()方法对pass进行一个校验规则的定义。详见表单验证

上表中的required、phone、email、url、number、date、identity是官方内置的规则,我们也可以自定义规则。方法如下:

form.verify({
  username: function(value, item){ //value:表单的值、item:表单的DOM对象
    if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
      return '用户名不能有特殊字符';
    }
    if(/(^\_)|(\__)|(\_+$)/.test(value)){
      return '用户名首尾不能出现下划线\'_\'';
    }
    if(/^\d+\d+\d$/.test(value)){
      return '用户名不能全为数字';
    }
  }  
  //我们既支持上述函数式的方式,也支持下述数组的形式
  //数组的两个值分别代表:[正则匹配、匹配不符时的提示文字]
  ,pass: [
    /^[\S]{6,12}$/
    ,'密码必须6到12位,且不能出现空格'
  ] 
});     

上述代码中,我们自定义了usernamepass两种规则,引用规则也很简单,在lay-verify=""里添加即可

<input type="text" lay-verify="required|username" placeholder="请输入用户名">
<input type="password" lay-verify="required|pass" placeholder="请输入密码">

 用户名和密码都是必填项,因此要加上required这个内置规则。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值