laravel自动验证

自动验证

表单验证是为了防止访问者跳过客户端验证而造成的系统安全问题,一但非法用户绕过客户端验证而服务器端没有加以验证,这样就是很不安全了,所以项目必须要进行服务器端表单验证。

Laravel 提供了多种不同的验证方法来对应用程序传入的数据进行验证。

注:多个验证规则可以通过 "|" 字符进行隔开

规则名

说明

required

不能为空

max:value

字段值必须小于或等于value,对于字符串来说,value 为字符数

min:value

字段值必须大于或等于value,对于字符串来说,value 为字符数

email

验证邮箱是否合法

url

验证字段必需是有效的 URL 格式

confirmed

验证两个字段是否相同,如果验证的字段是password,则必须输入一个与之匹配的password_confirmation字段

integer

验证字段必须是整型

ip

验证字段必须是IP地址

numeric

验证字段必须是数值

size:value

value 验证字段必须有和给定值value想匹配的尺寸,对字符串而言,value是相应的字符数目,对数值而言,value是给定整型值;对文件而言,value是相应的文件字节数

string

验证字段必须是字符串

unique

表名,字段,需要排除的ID

between:min,max

验证字段值的大小是否介于指定的 min 和 max 之间。字符串、数值或是文件大小的计算方式和 size 规则相同

 

* 验证方式一:(控制器验证)

Input::method()得到获取方法;

  public function valite(Request $request){

    $this->validate($request,[

      'title' => "required" //验证的规则,多个规则通过“|”隔开

],[

   'title.required' => "标题是必填的"

]);

  }

 

如果验证不通过会重定向返回原来的页面;  

常用的规则有:    

错误信息的输出:从session中获取错误信息;$errors变量中;可以直接在视图中显示  

  @if(count($errors)>0)

    @foreach($errors->all as $error)

    {{$error}}

    @endforeach

  @endif

错误信息的转成中文,需要下载对应的语言包;网址:[https://packagist.org] laravel-lang  

将下载的语言包放到resources/lang/  

修改config/app.php中的配置项:'locale' => 'zh-CN',如果没有的直接修改语言包  

方式二,独立方式去验证表单

namespace App\Http\Controllers;

use Validator;

use Illuminate\Http\Request;

use App\Http\Controllers\Controller;

class PostController extends Controller

{

    public function store(Request $request)

    {

        $validator = Validator::make($request->all(), [

            'title' => 'required|unique:posts|max:255',

            'body' => 'required',

        ]);

        if ($validator->fails()) {

            return redirect('post/create')

                        ->withErrors($validator)

                        ->withInput();

        }

    }

}

猜你喜欢

转载自www.cnblogs.com/wangzihao147/p/12808452.html