企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### CSRF配置 1、/system/config/csrf.php配置文件中,默认是开启CSRF验证的。当开启验证时,所有的表单数据都会通过CSRF进行验证。 2、CSRF验证开启时,在表单中必须创建一个标签:{{ csrf_field() }} 创建此标签后,系统会自动将表单中的数据由此提交并进行验证。相当于此标签会获取当前表单对象,然后通过此对象获取其中所有的数据,再对已经设置了要验证的字段进行验证。 ### CSRF验证设置 1、在表单提交的页面上设置CSRF验证 1.1 要进行验证的字段,注意是二维数组,可以设置多个字段 Validate::make([ //设置验证字段 ['us',required, '用户名不能为空', 3 ] //需要验证的字段 ,['pd',required, '密码不能为空', 3 ] ]); 1.2 验证字段的参数(以上代码为例): 'us'、'pd' 这两个是要验证的字段名称 required 这是验证规则,有多种,具体查看文档 "用户名不能为空" 这是当验证不通过时的提示信息 3 这是验证条件 ,具体看文档,共有5种,3为必须验证 2、自定义验证方法:将第二个参数换成一个方法。可以是匿名的方法。 ['us',function($value){alert();}, '用户名不能为空', 3 ] $value此参数系统会自动传入,是要验证的项目的值; function(){}是自定义的处理方法,可以写我们自己的解决办法 ### CSRF验证不通过的处理 1、当验证不通过时有3种处理方式,这与/system/config/error.php配置文件有关,即validate的取值方式。 1.1 validate=show 此时是调用系统内的信息提示框,显示验证错误信息 1.2 validate=redirect 此时是跳转到指定的处理页面 1.3 validate=default 此时是由用户自行处理 2、第1种方式直接显示没有什么可说了的。如上设置后,如果验证不通过就会跳转到提示信息页面,然后返回。 3、跳转到指定页面的处理方式也没有太多可说,基本也是一样,当验证不勇冠时会按指定路径跳转。但有一点,此时会传递一个包含错误信息的变量数组:$errors 这个数组中的内容就是设置CSRF验证项时设置的错误提示信息。注意是一个数组。此值可以输送到指定的跳转页面,让用户自行来处理。 4、用户自行处理方式。此种方式下为用户提供了2个方法: if(Validate::fail()){ View::with(['errArray'=>Validate::getError()]); }else{ echo "用户名:".$_POST['us']."<br>密码:".$_POST['pd']; } Validate::fail() //判断验证是否通过 Validate::getError() //获取验证不通过的错误信息 这样做的好处就是例子中的使用方法,当验证不通过时,将错误的信息传送到接收处理页面,让用户判断怎么处理。 ### 小结 1、/system/config/csrf.php配置文件中是否打开CSRF验证,默认是打开的。打开时必须在表单中增加指定的标签。 2、当在表单中设置了指定的标签后,系统中的IS_POST就可以使用了。就在其存在的前提下设置CSRF验证的项目内容等相关信息。 3、/system/config/error.php配置文件是错误信息处理配置。设置好相应的模式,根据配置设置处理方法。 (这里有个小问题:配置文件一旦修改,整个网站都会变,应当??) 4、只要开启CSRF验证,只要验证不通过都会有错误信息,第3中设置的不同只是系统如何处理错误信息的问题,不管你怎么处理,错误信息都是存在的。第一种中,将错误信息自动传送到了message方法显示;第三种方法,用户可以通过给定的方法,获取错误信息、将信息传递到指定地方进行处理。第二种方法中,自动将第三种方法中用户的处理方式自动传送到了指定的跳转页面。 ### 复制自动验证的设置参数 required 必须输入 email 邮箱 http 网址 tel 固定电话 phone 手机 zipCode 邮政编码 num 数字范围 如:num:20,60 range 长度范围(位数)如 :range:5,20 maxlen 最大长度如:maxlen:10 minlen 最小长度如:minlen:10 regexp 正则如:regexp:/^\d{5,20}$/ confirm 两个字段值比对如:confirm:password2 china 验证中文 identity 身份证 unique 数据表值唯一如:unique:news,id (id为表主键) exists 存在字段时验证失败 captcha 验证码 array(字段名,验证方法,错误信息,验证条件) 验证条件 (可选): 1 有字段时 2 值不为空时 3 必须处理 (默认) 4 值为空时 5 不存在字段时处理